尝试catch导致无限循环(input.mismatch.Exception)

时间:2019-07-03 18:45:21

标签: java

我正在尝试制作一个简单的计算器程序。但是,我也试图做到这一点,以便如果用户输入的内容不是双精度数,它将再次要求双精度数。但是,当我尝试输入类似“ 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();

    }

}

0 个答案:

没有答案