我试图让用户输入两个号码,如果输入了无效字符,我希望程序让用户再次输入一个号码。为什么我这样做的方法不正确?
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);
}
}
答案 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);