nextInt() 接收异常bug
废话不多说先看代码
package com.Class;
import java.util.Scanner;
/**
@author HelloWorld
@create 2021-04-22-13:56
@email 154803771@qq.com
*/public class Test0 {
public static void main(String[] args) {
int num;
Scanner scanner = new Scanner(System.in);
while (true) {
try{
System.out.print("Input num: ");
num = scanner.nextInt();
break;
} catch (Exception e) {
System.out.println("Error! Input again!");
}
}
}
}
说明
一段很简单的代码,只接受键盘录入的 int 类型数据,但是当第一次输入不为 int 类型时,程序会死循环。。。
分析
nextint() 会接收 Error! Input again!,所以就会一直报异常,并且不能再次输入
解决办法
- 重新定义输入流,关闭上次的输入流
public static void main(String[] args) {
int num;
while (true) {
try{
Scanner scanner = new Scanner(System.in);
System.out.print("Input num: ");
num = scanner.nextInt();
break;
} catch (Exception e) {
System.out.println("Error! Input again!");
}
}
}
- 用next() 接收Error! Input again!
public static void main(String[] args) {
int num;
Scanner scanner = new Scanner(System.in);
while (true) {
try{
System.out.print("Input num: ");
num = scanner.nextInt();
break;
} catch (Exception e) {
System.out.println("Error! Input again!");
scanner.next();
}
}
}
Peace and love, no war and no bug!