0

コードは最初から機能します。しかし、その後、出力は機能しません。これの主な目的は、ユーザーにフレーズを要求してから文字を要求するという無限ループを作成することです。次に、フレーズ内の文字の出現回数を出力します。また、単語を入力してこのループを打破するにはどうすればよいですか?

Scanner in = new Scanner(System.in);

for (;;) {

    System.out.println("Enter a word/phrase");
    String sentence = in.nextLine();

    int times = 0;

    System.out.println("Enter a character.");
    String letter = in.next();

    for (int i = 0; i < sentence.length(); i++) {
        char lc = letter.charAt(0);
        char sc = sentence.charAt(i);
        if (lc == sc) {
            times++;
        }
    }
    System.out.print("The character appeared:" + times + " times.");
}
4

3 に答える 3

2

for ループを削除し、while に置き換えます。

while ループはフレーズをチェックする必要があり、フレーズが一致すると自動的にドロップアウトします。

だから何か

while (!phraseToCheckFor){
// your code
}

これは宿題のように聞こえるので、すべてのコードを投稿するわけではありませんが、始めるにはこれで十分です。

于 2013-11-03T21:31:21.187 に答える
0

無限ループが必要な場合は、次のようにします。

for(;;) {  //or while(true) {
    //insert code here
}

breakたとえば、次のように、ステートメントを使用してループを中断できます。

for(;;) {
    String s = in.nextLine();
    if(s.isEmpty()) {
        break; //loop terminates here
    }
    System.out.println(s + " isn't empty.");
}
于 2013-11-03T21:30:45.803 に答える
0

プログラムを正しく実行するには、最後の改行文字を消費する必要があります。これを行うには、 nextLineへの呼び出しを追加します。実施例、

public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        for (;;) {

            System.out.println("Enter a word/phrase");
            String sentence = in.nextLine();

            if (sentence.trim().equals("quit")) {
                break;
            }

            int times = 0;


            System.out.println("Enter a character.");
            String letter = in.next();

            for (int i = 0; i < sentence.length(); i++) {
                char lc = letter.charAt(0);
                char sc = sentence.charAt(i);
                if (lc == sc) {
                    times++;
                }
            }
            System.out.println("The character appeared:" + times + " times.");
            in.nextLine();//consume the last new line
        }
    }
于 2013-11-03T21:36:52.273 に答える