-2

こんにちは皆さん、このコードでループを終了しようとしていますが、終了する前に、不要な行が出力されます。

do {
        System.out.println("Would you like to change one of the numbers    (y/n)?");
        choice = kb.next().charAt(0);
        System.out.println("Please enter the index of the number you want to change:");
        indexChange = kb.nextInt();
        System.out.println("Please enter the number you want to change:");
        changedIndex = kb.nextInt();
        elements[indexChange - 1] = changedIndex;
        for (int i = 0; i < elements.length; i++)
            System.out.println(index[i] + elements[i]);

    } while (choice != 'n');

ループが終了する前に、次の 2 行が出力されます:"Please enter the number you want to change:"&"Please enter the number you want to change:". どなたかこの過ちを手伝っていただけますか?

4

4 に答える 4

3

breakループでa を使用する必要があります。choiceこの場合、ループの各反復の開始時または終了時にチェックする必要がないため、に到達while (true)するまでループするために使用できます。break

while (true) {
        System.out.println("Would you like to change one of the numbers    (y/n)?");
        choice = kb.next().charAt(0);
        if (choice == 'n')
            break;
        System.out.println("Please enter the index of the number you want to change:");
        indexChange = kb.nextInt();
        System.out.println("Please enter the number you want to change:");
        changedIndex = kb.nextInt();
        elements[indexChange - 1] = changedIndex;
        for (int i = 0; i < elements.length; i++)
            System.out.println(index[i] + elements[i]);

    }

ただし、これには注意してください。うっかり無限ループを書き込んでしまうことはよくあります。

于 2013-02-18T22:41:34.520 に答える
1

残りの入力を処理する前に、終了条件を確認する必要があります...

do {
    System.out.println("Would you like to change one of the numbers    (y/n)?");
    choice = kb.next().charAt(0);
    if (choice != 'n' && choice != 'N') {
        System.out.println("Please enter the index of the number you want to change:");
        indexChange = kb.nextInt();
        System.out.println("Please enter the number you want to change:");
        changedIndex = kb.nextInt();
        elements[indexChange - 1] = changedIndex;
        for (int i = 0; i < elements.length; i++) {
            System.out.println(index[i] + elements[i]);
        }
    }

} while (choice != 'n' && choice != 'N');

大文字もチェックする必要があります...

于 2013-02-18T22:41:09.327 に答える
0

試す...

while(!'n'.equals(choice.toLowerCase())){...
于 2013-02-18T22:51:15.353 に答える
0

このチェック

 while (choice != 'n');

do ループの反復ごとに 1 回だけ発生します。したがって、ループ内で、数値の 1 つを変更するかどうかを尋ね、次に他の質問をして、最初の質問に入力した値が正しいかどうかを確認します。

キーワード「break」を使用して、選択を取得した後、ループから抜け出すことができます。

if (choice == 'n') 
{
   break;
}
于 2013-02-18T22:43:03.470 に答える