scanner类输入三个数,在输入不是数的情况下如何重新要求输入这三个数

乐百川 2015-03-26 08:47:46
public class Test1 {
public void main(String... args) {
Scanner scanner = new Scanner(System.in);
double a, b, c;
a = b = c = 0;
boolean isWrongInput = true;
do {
try {
System.out.print("Please input a,b and c:");
a = scanner.nextDouble();
b = scanner.nextDouble();
c = scanner.nextDouble();
isWrongInput = false;
} catch (InputMismatchException e) {
System.out.println("Wrong input!Please try again.");
scanner.reset();
} catch (Exception e) {
e.printStackTrace();
throw e;
}

} while (isWrongInput == true);
double delta = b * b - 4 * a * c;
double x1, x2;
if (delta == 0) {
x1 = x2 = (-b) / (2 * a);
System.out.println("x1=x2=" + x1);
} else if (delta > 0) {
x1 = (-b + Math.sqrt(delta)) / (2 * a);
x2 = (-b - Math.sqrt(delta)) / (2 * a);
System.out.println("x1=" + x1);
System.out.println("x2=" + x2);
} else {
double real, imagine;
real = -b / (2 * a);
imagine = Math.sqrt(-delta) / (2 * a);
System.out.printf("x1=%s\nx2=%s\n",
"" + real + "+" + imagine + "i", "" + real + "-" + imagine
+ "i");
}
}
}
我这样,输入如果用字母的话就直接死循环了,求教
...全文
202 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbjiabcd 2015-03-27
  • 打赏
  • 举报
回复
scanner.reset();改为scanner.nextLine();
wyc_ 2015-03-27
  • 打赏
  • 举报
回复
先用hasNextDouble()判断一下,再nextDouble()
三仙半 2015-03-27
  • 打赏
  • 举报
回复
把scanner = new Scanner(System.in);拿到do-while循环里面去

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧