java while中套用try和catch 的问题

举例:intchoice=1;if(choice==1){while(true){try{doublen=keyboard.nextDouble();break;}cat... 举例:
int choice = 1;
if (choice==1)
{
while(true)
{
try
{
double n = keyboard.nextDouble();

break;

}

catch

{
System.out.println("Error, try again");

continue;
}

}
}
...............................

这样的话只要第一次的输入不是数字是一个字母那么就会陷入死循环,无限执行catch里的内容,那么需要如何修改才能达到需要的目的?(目的是:直到输入的内容为一个数字的时候才继续运行)
有个地方漏打了catch(Exception e)
展开
 我来答
专治八阿哥的孟老师
2013-04-05 · 爱生活,爱编程,专心于学习技术和撸猫
专治八阿哥的孟老师
采纳数:494 获赞数:3914

向TA提问 私信TA
展开全部
public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);
while(true) {
keyboard=new Scanner(System.in);//再new一个就好了
try {
double n=keyboard.nextDouble();
break;
} catch(Exception e) {
System.out.println("Error, try again");
}
}
}
fuhaiwei
2013-04-05 · TA获得超过3409个赞
知道大有可为答主
回答量:974
采纳率:75%
帮助的人:1370万
展开全部

nextDouble可能不太好用,不如用nextLine(),然后自己转换成double

import java.util.Scanner;
public class T {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
try {
double n = Double.parseDouble(scanner.nextLine());
break;
} catch (NumberFormatException e) {
System.out.println("Error, try again");
}
}
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llei32wang
2013-04-05 · TA获得超过2736个赞
知道大有可为答主
回答量:1478
采纳率:60%
帮助的人:1387万
展开全部
scanner的问题,用scanner.nextDouble() 接收键盘输入一旦出现异常,循环再运行scanner.nextDouble()方法就不再接收键盘输入,不运行inputstream.read()方法,而是直接返回上一次有异常的值,然后继续异常。会无限循环catch块的代码的。
所以不能用scanner转型 要接收后自己转型
while(true){
try{
String s=keyboard.next();
double n = Double.parseDouble(s);
break;
}catch(NumberFormatException e){
System.out.println("Error, try again");
continue;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-04-05 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:664万
展开全部
进break 跳出循环 不会发生什么了
更多追问追答
追问
别傻了,不会不要乱说,我是测试过的,如果我输入一个字母不符合double类型,就会直接抛出错误根本执行不到break就进入catch了!!麻烦自己弄清楚再来给别人解答。
追答
哦  看来你还蛮清楚的吗   不是菜鸟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式