我有这段代码:
do {
try {
input = sc.nextInt();
}
catch(Exception e) {
System.out.println("Wrong input");
sc.nextLine();
}
}
while (input < 1 || input > 4);
现在,如果我输入'abcd'而不是整数1-4,它会给出“错误的输入”消息并且程序循环,我怎么能这样做,以便当我输入整数时它也会给出“错误的输入”不符合布尔值(输入&lt; 1 || input&gt; 4)? 因此,如果我输入5,它也会给我“错误的输入”。
答案 0 :(得分:0)
添加:
if(input < 1 || input > 4) {
System.out.println("Wrong input");
}
在input = sc.nextInt();
之后
答案 1 :(得分:0)
截至目前,您的try-catch块正在检查input
是否为int
类型。 do-while循环在输入后检查input
,因此没用。在用户输入他/她想要的内容之后必须检查该条件。这应该解决它:
do
{
try
{
input = sc.nextInt();
if(input < 1 || input > 4) // check condition here.
{
System.out.println("Wrong input");
}
}
catch(Exception e)
{
System.out.println("Expected input to be an int. Try again."); // tell user that input must be an integer.
sc.nextLine();
}
} while (input < 1 || input > 4);
答案 2 :(得分:0)
你也可以这样做:
while (true) {
try {
input = sc.nextInt();
if (input >= 1 && input <= 4) {
break;
}
} catch (Exception e) {
System.out.println("Wrong input");
}
sc.nextLine();
}