为什么这个循环直到输入一个整数才会查找输入?
问题描述:
我想让用户输入两个数字,如果输入了无效字符,我希望程序要求用户再次输入一个数字。为什么我的做法不正确?为什么这个循环直到输入一个整数才会查找输入?
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);
}
}
答
以下意味着你要goodInput
分配错误,然后整个表达式得到evaluted为false
所以 变化
}while(goodInput = false);
到
}while(!goodInput);
答
} while(goodInput = false);
是归因于=
而不是==
。因此,循环条件始终评估为false
,循环不会继续。
您可以使病情:
} while (goodInput == false);
其内容 “而goodInput是假的”
} while (goodInput != true);
其内容 “而goodInput是不是真正的”
或
} while (!goodInput);
,内容为“while not goodInput”
最后一个对于Java程序员来说通常是惯用的,并且是首选。
您在这里为'goodInput'赋值新值:'goodInput = false'而不是'!goodInput' – Multithreader 2014-09-18 23:19:10