2015-04-17 74 views
-2

我試圖檢查文本文件是否包含「圓」或「方形」,如果是這樣,以讀取該行的其餘部分。我曾嘗試使用scan.next()=="Circle",但似乎並不奏效。 編輯:數字指的是x和y座標,這些座標將被實現到一個類的實例中。在這種情況下,Square和Circle。如何讀取文本文件的第一個元素,如果它匹配,讀取該行的其餘部分?

文本文件:

Circle 50 60 40 50 50 
Square 250 260 45 -50 -50 
+2

可能的重複[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – GhostCat

+1

您應該開始瞭解Java的基本概念;例如:而不是擔心如何讀取文件...退一步瞭解如何正確比較Java中的對象。 – GhostCat

回答

0

如果從一個文本文件中讀取嘗試使用BufferedReader,然後使用的readLine,然後用.equals(),而不是==

一個例子:

BufferedReader reader = new BufferedReader(new FileReader(myTextFile)); 
String lineOne = reader.readLine(); 
if(lineOne.equals("circle")) 
{ 
    //do something 
} 
0

在Java中,「==」運算符用於比較2個對象。它檢查對象是否指向內存中的相同位置。換句話說,它檢查2個對象名是否基本上是對同一個內存位置的引用。 所以你應該使用等於。但在你的情況下,如果一行以圓或方塊開始,你必須從給定文件中讀取行。

您可以使用以下條件並檢查它是否適用於掃描儀本身?

String line = sc.next(); 
    if (line.startsWith("Circle") || line.startsWith("Square")){ 
     //Your logic 
    } 
0

試試這個:

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

相關問題