java中scanner的nextInt()的问题

例如,intnum=0;Scannerinput=newScanner(System.in);System.out.print("Num:");num=input.nex... 例如,
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之类的,没有特别深奥的了。

谢谢
展开
 我来答
lbw54288
推荐于2016-11-25 · TA获得超过134个赞
知道答主
回答量:90
采纳率:0%
帮助的人:76.3万
展开全部
用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);//不知道怎么返回出错的那行只能终止程序
}
}
郗妃林幼白
2019-03-17 · TA获得超过3894个赞
知道大有可为答主
回答量:3147
采纳率:31%
帮助的人:197万
展开全部
你先前的程序应该有这么一条
scanner
scanner=new
scanner(system.in);
当程序进行到这里的会要求你从键盘输入什么东西
如果你输入和一个整形的数字
比如
150
int
s=scanner.nextint();
这个时候s的值就是150
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
米宜章白风
2019-07-17 · TA获得超过3887个赞
知道大有可为答主
回答量:3111
采纳率:34%
帮助的人:265万
展开全部
你先前的程序应该有这么一条
scanner
scanner=new
scanner(system.in);
当程序进行到这里的会要求你从键盘输入什么东西
如果你输入和一个整形的数字
比如
150
int
s=scanner.nextint();
这个时候s的值就是150
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huapeihua
2008-04-13 · TA获得超过1026个赞
知道小有建树答主
回答量:2590
采纳率:0%
帮助的人:1637万
展开全部
让它跳出异常啊??输入异常不就行了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式