pav*_*hra 5 java input try-catch java.util.scanner inputmismatchexception
我正在创建一个小算法,这是其中的一部分。
如果用户输入非整数值,我想输出一条消息并让用户再次输入一个数字:
boolean wenttocatch;
do
{
try
{
wenttocatch = false;
number_of_rigons = sc.nextInt(); // sc is an object of scanner class
}
catch (Exception e)
{
wenttocatch=true;
System.out.println("xx");
}
} while (wenttocatch==true);
Run Code Online (Sandbox Code Playgroud)
我得到了一个永无止境的循环,我不知道为什么。
如何识别用户是否输入了一些非整数?
如果用户输入一个非整数,我如何要求用户再次输入?
更新
当我打印异常时,我收到“InputMismatchException”,我该怎么办?
在Scanner
不前进,直到该项目被读取。这在Scanner JavaDoc 中提到。因此,您可以使用.next()
方法hasInt()
读取int
值或在读取值之前检查是否。
boolean wenttocatch;
int number_of_rigons = 0;
Scanner sc = new Scanner(System.in);
do {
try {
wenttocatch = false;
number_of_rigons = sc.nextInt(); // sc is an object of scanner class
} catch (InputMismatchException e) {
sc.next();
wenttocatch = true;
System.out.println("xx");
}
} while (wenttocatch == true);
Run Code Online (Sandbox Code Playgroud)
小智 5
您不必尝试尝试。此代码将为您解决问题:
public static void main(String[] args) {
boolean wenttocatch = false;
Scanner scan = new Scanner(System.in);
int number_of_rigons = 0;
do{
System.out.print("Enter a number : ");
if(scan.hasNextInt()){
number_of_rigons = scan.nextInt();
wenttocatch = true;
}else{
scan.nextLine();
System.out.println("Enter a valid Integer value");
}
}while(!wenttocatch);
}
Run Code Online (Sandbox Code Playgroud)