我不知道为什么这不起作用我这里没有编译错误,但程序总是返回else语句。我应该以其他方式定义操作还是其他方式调用它?
import javax.swing.JOptionPane;
public class Calculator1 {
public static void main(String []Args) {
String firstNum;
String operation;
String secondNum;
firstNum = JOptionPane.showInputDialog("Input a number.");
secondNum = JOptionPane.showInputDialog("Input another number.");
double num1 = Double.parseDouble(firstNum);
double num2 = Double.parseDouble(secondNum);
operation = JOptionPane.showInputDialog("Input an operation sign.");
if (operation == "x") {
System.out.println( num1 * num2 );
}
if (operation == "*") {
System.out.println( num1 * num2 );
}
if (operation == "/") {
System.out.println( num1 / num2 );
}
if (operation == ":") {
System.out.println( num1 / num2 );
}
if (operation == "+") {
System.out.println( num1 + num2 );
}
if (operation == "-") {
System.out.println( num1 - num2 );
}
else {
System.out.println("Please enter an appropriate operation sign.");
}
} }
答案 0 :(得分:0)
问题在于你的if语句。如果操作不等于" - "则始终执行else语句。这是因为每个if语句都是一个单独的代码块。
if(x) {}
if(y) {}
if(z) {}
else {}
您可以使用else而不是几个if语句来完成此工作。
if(x) {}
else if(y) {}
else if(z) {}
else {}
这样可行,但正确的方法是使用switch语句。
switch(operation) {
case "x": result = num1 * num2 ;
break;
case "/": result = num1 / num2;
break;
case "-": result = num1 - num2;
break,
default: System.out.println(errorMessage);
}
答案 1 :(得分:-1)
你应该使用“x”.equals(操作);
答案 2 :(得分:-1)
首先,你需要使用if / else结构:
if (operation == "x") {
System.out.println( num1 * num2 );
}
else if (operation == "*") {
System.out.println( num1 * num2 );
}
else if (operation == "/") {
System.out.println( num1 / num2 );
}
// Continue...
接下来,在java中,您无法将字符串的内容与' =='进行比较。运营商。你应该使用equals方法:
if (operation.equals("x")) {
System.out.println( num1 * num2 );
}
else if (operation.equals("*")) {
System.out.println( num1 * num2 );
}
else if (operation.equals("/")) {
System.out.println( num1 / num2 );
}
// Continue...
这应该有效,但是。为什么不能使用' =='操作
字符串是java中的对象,您可以使用引用处理对象。因此,当您正在进行' =='时,您正在比较参考地址。如果要比较内容,则必须使用equals方法。
另一种选择是使用开关:
switch(operation)
{
case "+":
System.out.println(num1 + num2);
break;
case "-":
System.out.println(num1 - num2);
break;
case "/":
System.out.println(num1 / num2);
break;
case "x":
case "*":
System.out.println( num1 * num2 );
break;
default:
System.out.println("Error!");
}