2016-02-25 40 views
1

我是Java初學者,我試圖在文件中找到一個單詞並打印出它存在的行。
我的文件看起來像:如何識別java中的文件中的字符串和打印行?

 
dog one 100.11 
cat two 200.22 
doggg four 400.44 

如果我輸入「狗」,輸出應該是

狗一個100.11

但目前我有一個錯誤的字不找到。
請幫忙!謝謝!

File file = new File("G:\\Eclipse\\src\\test.txt"); 
Scanner s = new Scanner(file); 
Scanner input = new Scanner(System.in); 
System.out.println("Input:"); 
String name = input.next(); 
while (s.hasNext()) { 
    String line = s.nextLine(); 
    String name = s.next(); 
    if (name.equals(name)) { 
    System.out.println(line); 
    } 
} 

回答

0

找到,如果有在句子用一個詞

if (name.contains(input)) { 
    System.out.println(line); 
} 

現在你正在檢查是否dog是等於dog one 100.11

如果你有一個以上的線誰可以fit dog你可以拆分句子並檢查第一個字符串是否匹配

String[] words = line.split(" "); 
if (words[0].equals(input)) { 
    System.out.println(line); 
} 
+0

不過,如果我輸入的狗它會打印出狗和doggg – Jim

+0

@Jim我編輯我的答案 – Guy

+0

每個字是你的代碼工作!謝謝!我會盡力將其實施到更大的計劃中。 – Jim

1

答案是使用HashMap。

聲明你的HashMap作爲

HashMap<String, String> map = new HashMap<String, String>(); 

然後,通過你的字符串的第一個單詞添加到地圖。

while (s.hasNext()) { 
    String current = s.nextLine(); 
    String[] currentWords = current.split(" "); 
    map.put(currentWords[0], current); 
} 

然後,當你讀的字符串,簡單地說

System.out.println(map.get(line)); 
0

更正之一。

File file = new File("G:\\Eclipse\\src\\test.txt"); 
Scanner s = new Scanner(file); 
Scanner input = new Scanner(System.in); 
System.out.println("Input:"); 
String in = input.next(); 
while (s.hasNext()) { 
    String line = s.nextLine(); 
    if (line.contains(in)) { 
     System.out.println(line); 
    } 
} 
0

由於Guy的解決方案也給你「doggg four 400.44」。 只需在輸入中添加一個「」。

if (name.contains(input + " ")) { 
    System.out.println(line); 
} 

雖然這是效率很低,但它適用於一個小程序。

然而,這也發現 「繼承人文本狗一個11111」 並不會找到 「一個100.11狗」

編輯: 剛剛看到,蓋伊的編輯。 他的解決方案更好。

0

它看起來像你的代碼需要另一個while循環以掃描線

// Get user input 
Scanner input = new Scanner(System.in); 
System.out.print("Input:"); 
String name = input.next(); 
// Get lines from file 
File file = new File("G:\\Eclipse\\src\\test.txt"); 
Scanner fileScanner = new Scanner(file); 
while (fileScanner.hasNext()) { 
    String line = fileScanner.nextLine(); 
    // scan each word in a line 
    Scanner lineScanner = new Scanner(line); 
    while (lineScanner.hasNext()) { 
    String word = lineScanner.next(); 
    if (name.equals(word)) { 
     System.out.println(line); 
     break; // we done with the current line 
    } 
    } 
} 
相關問題