HPday04-java
1.通过控制台读取数据出现异常的问题:
通过控制台获取参数:
Scanner scanner =new Scanner(System.in);
int a =scanner.nextInt();
当我们在控制台输入 非数字时 会产生 java.util.InputMismatchException异常
通过查询api文档 InputMismatchException异常由 Scanner 抛出,表明获取的标记与期望类型的模式不匹配,或者该标记超出期望类型的范围。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("请输入第" + (i + 1) + "个数字");
int a = scanner.nextInt();
}
}
}
通过添加try catch来捕获异常
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
System.out.println("请输入第" + (i + 1) + "个数字");
try {
int a = scanner.nextInt();
} catch (Exception e) {
System.out.println("只能输入数字。。。");
i--;
}
}
}
}
虽然能提示“只能输入数字”但输入错误的位置被跳过去了。
将Scanner scanner = new Scanner(System.in);放入 try{} 语句中,可以解决以上问题但每次new Scanner ()对内存的消耗会增加。。
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("请输入第" + (i + 1) + "个数字");
try {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
} catch (Exception e) {
System.out.println("只能输入数字。。。");
i--;
}
}
}
}