2016-04-07 11 views
0

こんにちは私は、ファイル内の最も長い単語が現れる行番号を見つける必要があります。同じ長さの同じ単語が2つ以上ある場合は、最初のトラックのみを追跡します。 、ファイル内で最も長い単語が現れる行番号を見つける

 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

関連する問題