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) 展开
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) 展开
4个回答
展开全部
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");
}
}
}
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");
}
}
}
展开全部
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");
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
}
所以不能用scanner转型 要接收后自己转型
while(true){
try{
String s=keyboard.next();
double n = Double.parseDouble(s);
break;
}catch(NumberFormatException e){
System.out.println("Error, try again");
continue;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
进break 跳出循环 不会发生什么了
更多追问追答
追问
别傻了,不会不要乱说,我是测试过的,如果我输入一个字母不符合double类型,就会直接抛出错误根本执行不到break就进入catch了!!麻烦自己弄清楚再来给别人解答。
追答
哦 看来你还蛮清楚的吗 不是菜鸟
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询