【发布时间】:2015-09-24 15:19:39
【问题描述】:
我必须用 Java 创建一个计算器。到目前为止一切正常,除了当有人在要求输入数字时输入一个不是整数的值时,我无法完全弄清楚如何产生错误消息。我尝试了“try, catch”语句,但它仍然在 IDE 中引发错误:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
这是我程序其余部分的代码:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Calculator {
static int num1, num2;
static int memory;
static String operation;
static String menu = "\nChoose an operation:\n+ Add\n- Subtract\n* Multiply\n/ Divide\n^ Exponent\n~ Square Root\n Exit";
static boolean run = true;
public static void menu (String menu){
System.out.println (menu);
};
public static void add (int num1, int num2) {
System.out.println (num1 +num2);}
public static void subtract (int num1, int num2) {
System.out.println (num1 - num2);
};
public static void multiply (int num1, int num2) {
System.out.println (num1 * num2);
};
public static void divide (int num1, int num2) {
if (num2 !=0) {
System.out.println (num1/num2);}
else{
System.out.println ("Cannot divide by 0");
};
};
public static void exp (int num1, int num2) {
System.out.println (Math.pow(num1,num2));
};
public static void sqrt (int num1) {
System.out.println (Math.sqrt(num1));
};
public static void main(String[] args) {
Scanner scanner = new Scanner (System.in);
do{
menu(menu);
operation = scanner.next();
try {
switch (operation) {
case "+":
System.out.println ("Enter first number:");
num1 = scanner.nextInt();
System.out.println ("Please enter a valid number");
System.out.println ("Enter second number:");
num2 = scanner.nextInt();
add (num1,num2);
break;
case "-":
System.out.println ("Enter first number:");
num1 = scanner.nextInt();
System.out.println ("Enter second number:");
num2 = scanner.nextInt();
subtract (num1, num2);
break;
case "*":
System.out.println ("Enter first number:");
num1 = scanner.nextInt();
System.out.println ("Enter second number:");
num2 = scanner.nextInt();
multiply (num1, num2);
break;
case "/":
System.out.println ("Enter first number:");
num1 = scanner.nextInt();
System.out.println ("Enter second number:");
num2 = scanner.nextInt();
divide (num1, num2);
break;
case "^":
System.out.println ("Enter first number:");
num1 = scanner.nextInt();
System.out.println ("Enter exponent:");
num2 = scanner.nextInt();
exp (num1, num2);
break;
case "~":
System.out.println ("Enter number:");
num1 = scanner.nextInt();
sqrt(num1);
break;
case "Exit":
System.out.println("You have exited the calculator");
System.exit(0);
run = false;
break;
default:
System.out.println("Invalid");
}
}catch (InputMismatchException e) {
}
}while(run == true);
scanner.close();
}
};
谢谢!
好的更新:我得到了 try catch 来抛出错误,但是当我运行它时出现错误,它运行 switch 语句的默认情况,然后再次运行(所以你会看到两次菜单),我只需要它出现一次
【问题讨论】:
-
在 com.catalyst.training.calculator.Calculator.main(Calculator.java:70)。 70 号线在哪里?
-
所以只是为了澄清你想在哪里看到错误信息。也不要为此使用 try catch 而是使用 while 循环并继续侦听 int。
-
当有人被提示输入一个数字,并输入非 Int 的其他内容时,我想要一条错误消息,然后提示他们输入一个有效数字
-
不要为此使用 try catch。而是使用 while 循环继续侦听,直到获得有效输入。
-
如果我使用 do while 循环,我还能在 while 中使用 InputMismatchException 吗?
标签: java calculator