您的位置:首页 > 编程语言 > Java开发

HPday04-java-new Scanner(System.in).nextInt();异常

2015-08-27 20:19 711 查看
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--;
}

}
}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: