我試圖檢查文本文件是否包含「圓」或「方形」,如果是這樣,以讀取該行的其餘部分。我曾嘗試使用scan.next()=="Circle"
,但似乎並不奏效。 編輯:數字指的是x和y座標,這些座標將被實現到一個類的實例中。在這種情況下,Square和Circle。如何讀取文本文件的第一個元素,如果它匹配,讀取該行的其餘部分?
文本文件:
Circle 50 60 40 50 50
Square 250 260 45 -50 -50
我試圖檢查文本文件是否包含「圓」或「方形」,如果是這樣,以讀取該行的其餘部分。我曾嘗試使用scan.next()=="Circle"
,但似乎並不奏效。 編輯:數字指的是x和y座標,這些座標將被實現到一個類的實例中。在這種情況下,Square和Circle。如何讀取文本文件的第一個元素,如果它匹配,讀取該行的其餘部分?
文本文件:
Circle 50 60 40 50 50
Square 250 260 45 -50 -50
如果從一個文本文件中讀取嘗試使用BufferedReader
,然後使用的readLine,然後用.equals(),而不是==
一個例子:
BufferedReader reader = new BufferedReader(new FileReader(myTextFile));
String lineOne = reader.readLine();
if(lineOne.equals("circle"))
{
//do something
}
在Java中,「==」運算符用於比較2個對象。它檢查對象是否指向內存中的相同位置。換句話說,它檢查2個對象名是否基本上是對同一個內存位置的引用。 所以你應該使用等於。但在你的情況下,如果一行以圓或方塊開始,你必須從給定文件中讀取行。
您可以使用以下條件並檢查它是否適用於掃描儀本身?
String line = sc.next();
if (line.startsWith("Circle") || line.startsWith("Square")){
//Your logic
}
試試這個:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class FileReader {
public FileReader() {
Scanner scanner;
List<String> list;
try {
list = new ArrayList<>();
scanner = new Scanner(new File("file.txt"));
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
if (!s.startsWith("Circle") && !s.startsWith("Square")) {
break;
}
System.out.println(s);
list.add(s);
}
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FileReader();
}
文件名爲file.txt的:
Circle 50 60 40 50 50
Square 250 260 45 -50 -50
False 50 60 40 50 50
如果你比較字符串,總是使用equals
不==
。檢查this出
可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – GhostCat
您應該開始瞭解Java的基本概念;例如:而不是擔心如何讀取文件...退一步瞭解如何正確比較Java中的對象。 – GhostCat