0

実行時に以下のこのプログラムは停止しません。大きな間違いはないと思いますが、Javaが初めてなので助けてください。

import java.util.*;
    public class ReverseWords {
    public static void main( String args[] ) {
        String paragraph;
        Scanner input = new Scanner (System.in);

        System.out.print("Enter a paragraph: ");
        paragraph = input.nextLine();
        paragraph = paragraph.trim();
        StringTokenizer tokens = new StringTokenizer(paragraph, ".");
        while (tokens.hasMoreTokens()){

            for (int i = paragraph.length() - 1; i>=0; i--) {
                System.out.print(paragraph.charAt(i));
            }
            System.out.print(". ");
        }
        System.out.println();
    }
    }

入力すると: The quick brown fox. Jumps over. The lazy dog.
出力: .god yzal ehT .revo spmuJ .xof nworb kciuq ehT. 無限回。

どうもありがとうございます!

4

3 に答える 3

3

これを見てください:

 while (tokens.hasMoreTokens())

次のトークンを取得することはありません。したがって、それが真に戻った場合、それは永遠にそうし続けるでしょう。あなたはおそらく(whileループで)欲しいでしょう:

String token = tokens.nextToken();
for (int i = token.length() - 1; i >= 0; i--) {
    System.out.print(token.charAt(i));
}
System.out.print(". ");

これは、各行内の各部分文を逆にすることを前提としています。あなたの目的が何であるかは本当に明確ではありません。

于 2012-07-22T08:41:48.470 に答える
2

tokenizerループでを使用することさえありません。そのため、hasMoreTokens()常にtrueを返します。

于 2012-07-22T08:41:35.323 に答える
0

私はJavaを使用したことがありませんが、「StringTokenizer」が非常に奇妙でない限り、whileループは「hasMoreTokens」をチェックしますが、ループの本体がトークンを削除することはありません。したがって、常により多くのトークンがあります...

于 2012-07-22T08:44:48.147 に答える