申し訳ありませんが、私はJavaが初めてなので、この質問は不明確かもしれません。
入力の取得がプログラムの残りの部分から確実に取り囲まれるようにしたかったので、最近、while ループで try および catch ステートメントを囲む処理を行っています。
= false (例: while (done = false)) を使用する代わりに、while 条件 (例: while (!done)) で変数の前に感嘆符 (!) を使用すると、プログラムの方法が変わるという問題に遭遇しました。実行します。
前者 (!done) では、try および except ステートメントが期待どおりに実行されます。後者 (done = false) はそうではなく、単純にそれらをスキップしてコードの次の部分に進みます。
という印象を受けました!変数の前は、var = false と同じことを意味していました。
私は間違っていますか?
次に例を示します。
import java.util.Scanner;
public class TestOne {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int num;
boolean inputDone = false;
while (!inputDone) {
try {
System.out.print("Enter in a number here: ");
num = input.nextInt();
inputDone = true;
}
catch (Exception e) {
System.out.println(e);
System.exit(0);
}
}
System.out.println("Success!");
}
}
現在のところ、プログラムのコンパイルと実行はスムーズに進みます。数字の入力を求めるプロンプトが表示され、文字または非常に長い数字を入力すると、例外の種類が出力されて終了します。通常の数値を入力すると、Success! と出力されます。
一方、!inputDone を inputDone = false に置き換えると、単に Success! と出力されます。プログラムを実行すると。
の違いを説明できる人はいますか ! while ループ内の = false ステートメントは?