java中scanner的nextInt()的问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 01:49:14
例如,
int num = 0;
Scanner input = new Scanner(System.in);
System.out.print("Num: ");
num = input.nextInt();
这个时候如果输入了非整数(Double,Float,String,Char等)的话,程序会跳出并报错。

有什么方法可以不跳出?例如:
int num = 0;
Scanner input = new Scanner(System.in);
do
{
System.out.print("Num: ");
price = input.nextInt();
if (num < 0)
{
System.out.println("Error")
}
}while (num < 0);
这样的话,如果输入的数字小于0了,那么就会让用户重新输入数字,
但是用户如果输入的是非整数的话,由于nextInt的限制,会跳出并报错,
我希望此时如果用户输入了非数字的话,system.out.print告知用户输入错误,程序不跳出仍然运行,同时用条件循环让用户重新输入num,直到输入的是一个正整数。

我知道可以让用户输入String,之后再转换为Int,但是这样的话如何判断用户输入的不是个整数?当然if( !num.equals("a") || !num.equals("b") || ...)是可以的,但很弱智,要打多少个equals(“什么”)啊……

所以……望有人解答下。如果能用比较简单的方法最好。

array没学,本人目前接触了不多,有scanner的,while,for之类的,没有特别深奥的了。

谢谢

用try-catch捕捉错误,catch后面大括号是出错后你要干的事(出错后执行里面代码),不会的查看书本的"异常"那章,我不会从异常中返回,也许根本没办法返回,这个问题还要等待高手回答,所以我只能直接关闭程序,当然如果你有好的办法可以放到catch里面去

代码如下:

public static void main(String[] args) {
try{
int num = 0;
Scanner input = new Scanner(System.in);
System.out.print("Num: ");
num = input.nextInt();
} catch (InputMismatchException e){
System.out.print("对不起输入错误,请重试");//出错提示
System.exit(-1);//不知道怎么返回出错的那行只能终止程序
}
}

让它跳出异常啊??输入异常不就行了?