2017-08-08 8 views
0
public class LongWord { 
    public static void main(String args[]) { 
     String text = "my brother is taller than [email protected] I always a short man,but smart than him"; 

     // Find the longest word in the String 
     String[] words = text.split("\\s"); 
     String longestWord = ""; 
     for (int i = 1; i < words.length; i++) { 
      int firstLen = words[i - 1].length(); 
      int secondLen = words[i].length(); 
      if (firstLen <= secondLen) { 
       longestWord = words[i]; 
      } 
     } 
     System.out 
       .println("===================================================\nLongest Word:::: \n"); 
     System.out.println(longestWord); 
    } 
} 

//これは、ステートメント内で最も長い単語を見つけるサンプルプログラムです。出力は "me @ 1233334"となります。しかし、私は出力として "人、しかし"単語を得ています。誰でもプログラムに間違っていることを教えてください。文字列の長さ()の比較が正しく行われていません

+3

を使用ペパーに、ペンを使用してアルゴリズムを実行し、各ステップで、各変数の値を書き込むことができ

String longestWord = words[0]; for(String word : words) { if(word.length() > longestWord.length()){ longestWord = word; } } 

。あなたは基本的な論理を持っています。 –

+0

特に、比較している単語の長さに焦点を当てます。 – GhostCat

+0

StringTokenizerという名前の別のJavaクラスを調べるとよいでしょう。これにより、空白やカンマなどの区切り文字を指定できます。 – Alan

答えて

0

あなたの方法は、文字列の配列で最大の文字列を見つけることができません。直前の文字列よりも大きい文字列の配列の最後の文字列を検索します。

あなたの比較(firstLen <= secondLen)は、いずれの文字列も現在の最長文字列と比較しません。あなたのメインループは次のようになります。あなたはまた、for(int i = 0; i < words.length(); i++)を使用してwords[i]の代わりに、(String word : words)word

0

最も長い単語を決定するロジックが間違っています。

「単語」(この文脈では、単語は単に空白で区切られた単語を意味します)と前の単語とを比較しています。それが長い場合は、これが最も長くなります。

manですが、単純に前の単語(短い)よりも長いため選択されています。人の後には何もないが、それ以降の単語が前の単語より長いので選択されないことに注意してください。

0

あなたは間違っています。あなたはsecondLenlongestWordより大きい場合と比較されていない、それは実際にする必要があります:

longestWord = words[0]; 
for (int i = 1; i < words.length; i++) { 
    int longestLen = longestWord.length(); 
    int secondLen = words[i].length(); 
    if (longestLen <= secondLen) { 
     longestWord = words[i]; 
    } 
} 
関連する問題