-2
私は研究の一部として簡単なシミュレーションを書いています(はい、私はJavaの初心者です)。その中で私はScannerを介してユーザーからの入力を受けています。有効な形式(数字のみ)と有効範囲の入力を確認したいと思います。私は困難に直面した - 入力値は "while"ループから出てこない。私にヒントを教えてください。私はそれを感謝します!有効な入力と使用の入力の確認さらに
// check for invalid input
String input;
boolean valid = false;
while (!valid){
try{
input = sc.next();
user = Integer.parseInt(input);
valid = true;
}catch (NumberFormatException ex) {
System.out.println(ex);
System.out.println("Number but not a character or a symbol!");
}
System.out.println("Try once more!");
}
// interaction with user;
while (user !=3){
if (user ==1){
System.out.println("What angle I should set?");
userChange = sc.nextDouble();
shot.userAngle(userChange);
shot.show();
}
else if (user ==2){
System.out.println("What speed I should set?");
userChange = sc.nextDouble();
shot.userSpeed(userChange);
shot.show();
}
else {
System.out.println("Wrong number!");
}
System.out.println("What you want to change?");
user = sc.nextInt();
}
それは、変数「ユーザー」が設定されていない可能性があることを述べている:ここで
はあなたに興味があるかもしれない私のコードの一部です。
ローカル変数を初期化する必要があります。上記のどこかで 'int user;'を宣言し、初期化していないと思われます。あなたはそれを 'int user = 0;'か何かにする必要があります –
実際にユーザを設定するコードの部分を投稿できますか? – user7733611
コンパイラは、最初の 'while'ループが終了したときに' user'を設定しなければならないことを伝えることはできません。それはコンパイラの推論を超えた複雑なロジックです。 – AJNeufeld