2016-04-07 48 views
0

你好,我需要找到文件中最長單詞出現的行號。如果有兩個或更多相同長度的不同單詞,則只跟蹤第一個單詞。我已經做了最長的單詞的跟蹤,但我需要幫助尋找最長的單詞是什麼線這是我的代碼,發現最長的單詞:查找文件中最長單詞出現的行號

 while(scan2.hasNextLine()){ 
      String line = scan2.nextLine(); 
      if(line.contains(longestWord)){ 
       longestWordList.add(longestWord); 
      } 
      else{ 
       longestWordList.add(null); 
      } 
     } 
+0

爲什麼要在'else'中加'null'?我假設'longestWordList.add(longestWord);'應該是'longestWordList.add(line);' –

+0

您需要一個int來跟蹤行號 –

+1

您是否假設找到了最長的單詞或者您會在這個過程中發現它? –

回答

1

你需要保持當前行號的軌道,最長單詞的行號,以及最長單詞的長度。對於每一行,通過分割空格和標點符號將行分割爲一個單詞數組。你可以用正則表達式來做到這一點。然後查看每個單詞是否長於最長單詞。如果找到新的最長單詞,請記錄當前行號並記錄新的最長單詞長度。

int lineNumLongest = 0, lineNumCurrent = 0, longestLength = 0; 
while(scan2.hasNextLine()) { 
    lineNumCurrent++; 
    String[] words = scan2.nextLine().split("[ .?!,;:/\\\\]"); 
    for (String word : words) { 
     if (word.length() > longestLength) { 
      lineNumLongest = lineNumCurrent; 
      longestLength = word.length(); 
     } 
    } 
} 
+0

我沒有包含任何類型的標點符號,但根據您的需要添加更多內容很容易。讓我知道你的文件是否包含不適用於該算法的東西。 – 4castle

+0

線程「main」中的異常java.util.regex.PatternSyntaxException:索引10附近的未封閉字符類 [。?!,;:/ \] ^ – iAmtheDank

+0

哎呀,沒有包含足夠的反斜槓。現在修復 – 4castle

相關問題