0

do-while ループを使用するコードを使用しており、そのループに if else ステートメントを追加したいと考えていました。do-while ループは、ユーザーが入力したテキストを確認し、「exit」という単語が入力された場合に終了します。

public static void main(String[] args) {

    String endProgram = "exit";
    String userInput;
    java.util.Scanner input = new java.util.Scanner(System.in);

    do {

        userInput = input.nextLine();
        if ( !userInput.equalsIgnoreCase(endProgram) ) {
            System.out.printf("You entered the following: %s", userInput);
        } else

    } while ( !userInput.equalsIgnoreCase(endProgram) );

}

このコードをコンパイルしようとすると、コマンド プロンプトから次のようなエラーが表示されます。

SentinelExample.java:20: error: illegal start of expression
            } while ( !userInput.equalsIgnoreCase(endProgram) );
            ^
SentinelExample.java:22: error: while expected
      }
       ^
SentinelExample.java:24: error: reached end of file while parsing
}
 ^

ループ内の if else ステートメントを削除すると、プログラムは正常にコンパイルされます。プログラムの構文に何か問題がありますか? または、while ループに if else ステートメントを入れることはできませんか?

4

5 に答える 5

2

elseブロックが欠落しているコードを確認してください:

    userInput = input.nextLine();
    if ( !userInput.equalsIgnoreCase(endProgram) ) {
        System.out.printf("You entered the following: %s", userInput);
    } else 

これがコンパイルエラーの原因です。elseを完全に削除するか、何かを追加する場合は、次の手順を実行して、これを修正できます。

    userInput = input.nextLine();
    if ( !userInput.equalsIgnoreCase(endProgram) ) {
        System.out.printf("You entered the following: %s", userInput);
    } else {
        // Do something
    }

そして、あなたの質問に答えるために、はい、ifステートメントをwhileループにネストすることは完全に有効です。

于 2013-08-16T04:38:17.367 に答える
0

そのかなりの可能性:

public static void main(String[] args) {

    String endProgram = "exit";
    String userInput;
    java.util.Scanner input = new java.util.Scanner(System.in);

    do {

        userInput = input.nextLine();
        if ( !userInput.equalsIgnoreCase(endProgram) ) {
            System.out.printf("You entered the following:"+userInput);// use plus ssign instead of %s
        }

    } while ( !userInput.equalsIgnoreCase(endProgram) );

}
于 2013-08-16T04:42:04.473 に答える
0

{}else ブロックを閉じていません。それ以外の

do{
  if(){
  }else
}while()

使用する

do{
  if(){
  }else{
  }
}while()
于 2013-08-16T04:39:23.003 に答える
0

それは、コンパイラにwhile条件がelse条件の下にあり、それが間違っていると思わせるだけのelseステートメントのためです。外すだけ

于 2013-08-16T04:39:50.807 に答える