为什么在输入整数之前,此循环不会查找输入?

时间:2014-09-18 23:17:25

标签: java try-catch do-while

我试图让用户输入两个号码,如果输入了无效字符,我希望程序让用户再次输入一个号码。为什么我这样做的方法不正确?

import java.util.InputMismatchException;
import java.util.Scanner;

public class Calculator {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        double answer = 0;
        boolean goodInput = false;
        do {
            try{
                System.out.println("Enter your first number:");
                double firstNum = input.nextDouble();
                System.out.println("Enter your second number:");
                double secondNum = input.nextDouble();
                System.out.println("Which operation would you like to use?");
                System.out.println("For addition,         type add");
                System.out.println("For subtraction,      type subtract");
                System.out.println("For divison,          type divide");
                System.out.println("For multiplication,   type multiply");
                String operation = input.next();
                goodInput = true;

                if (operation.equals("add")) {
                    answer = firstNum + secondNum;
                    System.out.println(firstNum + " + " + secondNum + " = "+ answer);
                }
                if (operation.equals("subtract")) {
                    answer = firstNum - secondNum;
                    System.out.println(firstNum + " - " + secondNum + " = "+ answer);
                }
                if (operation.equals("divide")) {
                    answer = firstNum / secondNum;
                    System.out.println(firstNum + " / " + secondNum + " = "+ answer);
                }
                if (operation.equals("multiply")) {
                    answer = firstNum * secondNum;
                    System.out.println(firstNum + " x " + secondNum + " = "+ answer);
                }
            }catch(InputMismatchException e) {
                System.out.println("Thats not a number, enter a number:");
            }
        }while(goodInput = false);
    }

}

2 个答案:

答案 0 :(得分:1)

} while(goodInput = false);

=而非==的分配。因此,循环条件总是被评估为false并且循环不会继续。

你可以做出这样的条件:

} while (goodInput == false);

读作“当goodInput为假”

} while (goodInput != true);

读作“虽然goodInput不正确”

} while (!goodInput);

读作“while not goodInput”

最后一个通常是Java程序员惯用的,是首选。

答案 1 :(得分:0)

以下表示您为goodInput指定了false,然后整个表达式被评估为false

所以 变化

    }while(goodInput = false);

    }while(!goodInput);