Java 检查有效输入并进一步使用输入
作为学习的一部分,我正在编写一个简单的模拟(是的,我只是Java的初学者)。在它中,我通过扫描仪从用户那里获取输入,我想检查输入的有效格式(仅数字)和有效范围。我遇到了一些困难-输入值不是从“while”循环中出来的。你能给我小费吗?我会很感激的 以下是您可能感兴趣的我的部分代码:Java 检查有效输入并进一步使用输入,java,Java,作为学习的一部分,我正在编写一个简单的模拟(是的,我只是Java的初学者)。在它中,我通过扫描仪从用户那里获取输入,我想检查输入的有效格式(仅数字)和有效范围。我遇到了一些困难-输入值不是从“while”循环中出来的。你能给我小费吗?我会很感激的 以下是您可能感兴趣的我的部分代码: // check for invalid input String input; boolean valid = false; while (!valid){ try{ input = sc.
// 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();
}
它表示变量“user”可能未设置。Soled。这里的工作代码
int user;
double userChange;
boolean stop = false;
// check for invalid input if not integer and if out of range
// interaction with user
while (!stop){
try {
System.out.println("What you want to change?");
user = sc.nextInt();
if (user ==3){
stop = true;
}
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();
if (user ==3){
stop = true;
}
}
}
catch (InputMismatchException e){
System.out.println(e);
System.out.println("Wrong input! Number but not a symbol or a character!");
sc.next();
}
}
局部变量需要初始化。您可能正在声明
int user代码>在上面的某个位置,并且不初始化它。您需要将其设置为int user=0
或其他什么你可以发布你实际设置用户的部分代码吗?如果第一个循环退出,编译器无法判断必须设置用户。这是一个复杂的逻辑,超出了编译器的推理能力