我正在尝试制作一个简单的计算器程序。但是,我也试图做到这一点,以便如果用户输入的内容不是双精度数,它将再次要求双精度数。但是,当我尝试输入类似“ e”之类的内容时,它给了我一个input.mismatch.exception。我放入了一个try catch块,所有的事情就是无限地要求输入而没有机会输入,然后出错了,因为它使RAM超载,给了我stackoverflow(nice)错误。 代码:
/**
* @author camper
* Jul 1, 2019
* 3:28:04 PM
*/
import java.util.Scanner;
public class io2 {
static double num1;
static String op;
static double num2;
public static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
doStuff();
}
public static void doStuff() {
getNum1();
getOp();
getNum2();
calc(num1, op, num2);
}
public static void calc(double a, String c, double b) {
if (c.equals("+")) {
System.out.println(a + b);
} else if (c.equals("-")) {
System.out.println(a - b);
} else if (c.equals("*")) {
System.out.println(a * b);
} else if (c.equals("/")) {
System.out.println(a / b);
} else {
System.out.println("That ain't no operator");
doStuff();
}
}
public static void getNum1() {
try {
System.out.println("Enter your first number:");
num1 = input.nextDouble();
}catch (Exception e) {
getNum1();
}
}
public static void getOp() {
System.out.println("Enter what operator you want (+,-,*,/):");
op = input.nextLine();
}
public static void getNum2() {
System.out.println("Enter your second number:");
num2 = input.nextDouble();
}
}