该程序应该是一个基本的计算器,它接受两个双输入,然后提示用户输入一个带有相应数学运算符的字符串。由于某些原因,在用户输入与菜单对应的String后,我的基本计算器不会返回值。
import java.util.Scanner;
public class Assignment3 {
public static void main (String[] args)
{
String operator = "";
double userInputOne;
double userInputTwo;
double output = -.00001;
String comparison = "";
Scanner scan = new Scanner(System.in);
System.out.println("Enter the first number of your calculation:");
userInputOne = scan.nextDouble();
System.out.println("Enter the second number of your calculation:");
userInputTwo = scan.nextDouble();
System.out.println("Type in one direction under Calculator Options:");
System.out.println("Add, Subtract, Multiply, Divide, Mod");
System.out.println("Compare");
System.out.println("Print Numbers");
System.out.println("Quit");
Scanner scanTwo = new Scanner(System.in);
operator = scanTwo.nextLine();
if (operator == "Add")
{
output = userInputOne + userInputTwo;
}else if (operator == "Subtract"){
output = userInputOne - userInputTwo;
}else if (operator == "Multiply"){
output = userInputOne * userInputTwo;
}else if (operator == "Divide"){
output = userInputOne / userInputTwo;
}else if (operator == "Mod"){
output = userInputOne % userInputTwo;
}else if (operator == "Compare"){
if(userInputOne == userInputTwo){
comparison = (userInputOne + " Is equal to " + userInputTwo);
System.out.println(comparison);
}else if (userInputOne > userInputTwo){
comparison = (userInputOne + " Is greater than " + userInputTwo);
System.out.println(comparison);
}else if (userInputOne < userInputTwo){
comparison = (userInputOne + " Is less than " + userInputTwo);
System.out.println(comparison);
}
}else if (operator == "Print Numbers"){
comparison = userInputOne + " " + userInputTwo;
System.out.println(comparison);
}else if (operator == "Quit"){
System.exit(0);
}
if (output != -.00001){
System.out.println(output);
}
}
}
答案 0 :(得分:4)
您无法将字符串与需要==
operator.equals()
进行比较
例如,而不是operator == "Subtract"
使用"Subtract".equals(operator)
答案 1 :(得分:2)
答案 2 :(得分:0)
问题是使用==
来比较字符串。您使用的是哪个Java版本?如其他人所述,您可以使用equals()
代替,但从Java 7开始,您可以使用switch
进行字符串比较:
switch (operator) {
case "Add":
utput = userInputOne + userInputTwo;
break;
case "Subtract":
utput = userInputOne - userInputTwo;
break;
case "Multiply":
utput = userInputOne * userInputTwo;
break;
// ...
default:
// optional default statement
break;
}
请注意每个break
末尾的case
语句,以防止堕落。
Oracle Java Tutorials中提供了更多信息(向下滚动到“在交换机语句中使用字符串”)。