2016-02-29 152 views
3

我正在學習註冊系統。我有存儲在每一行,如與studentname,studentnumber和學生的年級一個文本文件:搜索文件中的字符串並返回該特定行

name1,1234,7 
name2,2345,8 
name3,3456,3 
name4,4567,10 
name5,5678,6 

如何搜索的名稱,然後返回整個句子?在查找名稱時它沒有得到任何匹配。

我當前的代碼如下所示:

public static void retrieveUserInfo() 
{ 
    System.out.println("Please enter username"); //Enter the username you want to look for 
    String inputUsername = userInput.nextLine(); 


    final Scanner scanner = new Scanner("file.txt"); 
    while (scanner.hasNextLine()) { 
     final String lineFromFile = scanner.nextLine(); 
     if(lineFromFile.contains(inputUsername)) { 
      // a match! 
      System.out.println("I found " +inputUsername+ " in file "); // this should return the whole line, so the name, student number and grade 
      break; 
     } 
     else System.out.println("Nothing here"); 
    } 
+0

語言= Java的?如果是這樣,請在標籤中加入。此外,似乎'lineFromFile'已經包含了你的整行,所以只需打印那個.... – Neijwiert

+0

添加了標籤並打印出lineFromFile,但它仍然沒有找到匹配。這可能與文本文件中的逗號分隔有關嗎? – Niels

+0

如果你添加'System.out.println(lineFromFile);'在你的'if'語句之後,你會得到什麼輸出? while(scanner.hasNextLine()) – Neijwiert

回答

0

您已經保存整個行的變量。只是打印這樣的:

while (scanner.hasNextLine()) { 
     final String lineFromFile = scanner.nextLine(); 
     if(lineFromFile.contains(inputUsername)) { 
      // a match! 
      System.out.println("I found " +lineFromFile+ " in file "); 
      break; 
     } 
     else System.out.println("Nothing here"); 
    } 
1

問題是與Scanner(String)構造,因爲它:

公共掃描儀(java.lang.String中源)

構造產生掃描值,一個新的Scanner來自 指定的字符串。

參數:source - 一個字符串進行掃描

它不知道有關文件的任何事情,只是字符串。所以,這個Scanner實例可以給你的唯一行(通過nextLine()調用)是file.txt

簡單測試將是:

Scanner scanner = new Scanner("any test string"); 
assertEquals("any test string", scanner.nextLine()); 

您應該使用Scanner類的其他構造,如:

Scanner(InputStream) 
Scanner(File) 
Scanner(Path) 
相關問題