问题1:如果用户输入的int
大于或等于2
,则第一个if
语句将变为true
执行代码时将boolean
error1
变量设置为false。 do
循环只应在error1
变量为true
时根据我的while
语句重复。然而,无论如何循环重复。
如果设置为if
退出循环,如何创建第一个true
语句?
问题2 :如果用户输入了try-catch
以外的其他内容,我正在使用do-while
代码来帮助重复int
循环。但是,当输入abc
或12.3
之类的内容时,执行println
代码的第一个try
,请求用户的try
语句的第二行输入被忽略,catch
代码再次执行。这成为没有用户输入的非终止循环。
如何在执行catch
代码后获取要求用户输入的语句?
这是我的代码:
import java.util.InputMismatchException;
import java.util.Scanner;
public class DeepbotCalc {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int points = 0;
boolean error1 = false;
do {
try {
System.out.println("How many points do you currently have?");
points = input.nextInt();
if (points >= 2){
error1 = false;
}
else if (points > 0 && points < 2) {
System.out.println("you need at least 2 points");
error1 = true;
}
else if (points <= 0) {
System.out.println("Please enter a positive whole number");
error1 = true;
}
} catch (InputMismatchException e){
System.out.println("Please enter a positive whole number.");
error1 = true;
}
} while (error1 = true);
答案 0 :(得分:0)
要在插入正确输入时停止循环,
while (error1 = true);
应该成为
while (error1 == true);
甚至更好
while(error1);
要在插入错误输入时修复无限循环,请在catch
添加
input.nextLine();
让扫描仪“继续”
答案 1 :(得分:0)
这解决了您的问题:
import java.util.InputMismatchException;
import java.util.Scanner;
public class DeepbotCalc {
public static void main(String[] args) {
Scanner input;
int points = 0;
boolean error1 = false;
do {
try {
input = new Scanner(System.in);
System.out.println("How many points do you currently have?");
points = input.nextInt();
if (points >= 2) {
error1 = false;
}
else if (points > 0 && points < 2) {
System.out.println("you need at least 2 points");
error1 = true;
}
else if (points <= 0) {
System.out.println("Please enter a positive whole number");
error1 = true;
}
}
catch (InputMismatchException e) {
System.out.println("Please enter a positive whole number.");
error1 = true;
}
} while (error1);
}
}
我按while(error1 = true)
更改了while(error1)
,并在try{}
声明中添加了一行新代码。
每次执行try{}
语句时,都会创建一个覆盖最后一个对象的新Scanner
对象。