我是java的新手,我正在尝试验证输入控制台的数字。我想要一个整数,但我知道如果输入一个字母,例如会出现错误,所以我想我会使用try&抓住。如果尝试并且第一次执行它,这是有效的,但我想循环直到用户输入有效整数。有这个工作,但当我得到一个有效的数字并打印出数字我得到所有尝试的清单....希望这是有道理的
import java.util.Scanner;
public class ConvertStringInt {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = 0;
System.out.print("Enter a whole number: ");
try {
i = sc.nextInt();
} catch (Exception e){
System.out.println("Error");
main(args);
}
System.out.println(i);
}
}
以下是控制台的输出....
输入一个整数:a
错误
输入整数:d
错误
输入整数:2.0
错误输入整数:1
1
0
0
0
有人可以解释一下吗?
提前致谢
尼尔
答案 0 :(得分:2)
您正在查看每个输入的输出,因为您以递归方式调用b
。如果您立即键入正确的IO
,则流程为:
main
但在您的情况下,输入不是int
。这就是:你输入第一个输入,它失败了。您不打印,因为您先再次呼叫main
ask for input -> int
print i (1)
,要求下一个输入。只有当你得到一个正确的int
打印,然后完成并允许先前的main
- 执行才能通过打印完成,然后允许先前的......等等:
int
请查看Ravi的答案,以便在不使用main
(which is discouraged)的情况下反复询问输入的正确方法。
答案 1 :(得分:1)
您可以在循环中检查整数标记
while (!sc.hasNextInt()) // loop until next token is integer
{
// do something or print error
System.out.println(sc.next() +"is not number");
}
i = sc.nextInt();