2017-07-25 32 views
1

我正在編寫一個程序來讀取文件並檢查每一行是否存在特定單詞。我有下面的代碼,但是代碼不執行'if語句',我不知道爲什麼。所謂「scores.txt」文件包括:等於()方法不檢測文件中的單詞

Andy 60 
Bob 87 
Alice 59 

這是我到目前爲止有:

public static void scoreCheck() { 
     Scanner scanner = new Scanner("scores.txt"); 
     int lineNum = 0; 

     while (scanner.hasNextLine()) { 
      String line = scanner.nextLine(); 
      lineNum++; 

      if(line.equalsIgnoreCase("bob")) { 
       System.out.println("user Found On: " + lineNum); 
      } 
     } 
    } 

我好一會才找到該用戶bob存在就行了。請建議。

感謝

回答

1

String構建的Scanner讀取String。您需要更改

Scanner scanner = new Scanner("scores.txt"); 

Scanner scanner = new Scanner(new File("scores.txt")); 

此外,line"Bob" - 所以你可能想改變

if(line.equalsIgnoreCase("bob")) { 

喜歡的東西

if(line.toLowerCase().startsWith("bob")) { 

您可以使用Patternmatches()(測試整個比賽)。像,

Pattern p = Pattern.compile("bob", Pattern.CASE_INSENSITIVE); 
if (p.matcher(line).matches()) { 
    // ... 
+0

謝謝!這似乎工作,但只適用於用戶在提示期間輸入「bob」,但不工作時,用戶輸入「Bob」有沒有任何ignoreCase方法?謝謝 – SakshamInABox

+0

'if(line.toLowerCase()。startsWith(「Bob」.toLowerCase())){' –

+0

@SakshamInABox你也可以使用'Pattern'。請參閱編輯。 –

3

在它循環,line將有Bob 87值,第二次只檢查line.equalsIgnoreCase("bob")之前,即使我們忽略的情況下,「鮑勃」不等於「鮑勃·87」

你需要在你的病情做的是line.toLowerCase().startsWith("bob")

+0

OP的問題的好解決方案。 – CodingNinja