如果有人输入除数字以外的任何内容(例如“*”/“xyz”)作为 a、b 的值,我在查找如何显示“无效输入再见”消息时遇到问题,我制作的二次计算器中的c
DecimalFormat df = new DecimalFormat("0.00#");
Scanner sc = new Scanner(System.in);
Double a,b,c;
System.out.println("Welcome to the Grand Quadratic Calculator ! ");
System.out.print("Enter value of a = ");
a = sc.nextDouble();
System.out.print("Enter value of b = ");
b = sc.nextDouble();
System.out.print("Enter value of c = ");
c = sc.nextDouble();
double xone = (-b + Math.sqrt(b * b - 4 * a * c)) / 2 * a;
double xtwo = (-b - Math.sqrt(b * b - 4 * a * c)) / 2 * a;
if(b * b - 4 * a * c >= 0)
{
System.out.println("x1 = " + df.format(xone));
System.out.print("x2 = " + df.format(xtwo));
}
else
System.out.print("Invalid Input. \nGood Bye.");
最佳答案
当用户输入无效输入时,sc.nextDouble()
将抛出InputMismatchException
。
这会让你当前的程序崩溃,
永远不会到达打印“无效输入”消息的代码。
您可以将代码包装在 try
block 中,并捕获此异常:
try {
System.out.print("Enter value of a = ");
a = sc.nextDouble();
// ...
} catch (InputMismatchException e) {
System.out.print("Invalid Input. \nGood Bye.");
// return or exit with failure
}
“再见”消息表明您希望因输入无效而退出。
如果您实际上不想退出,那么您可以将用户输入部分和 try-catch block 包装在循环内,并进行有限或无限的重试。
关于java - 如果输入的不是数字则显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40703297/