我为罪,cos,棕褐色,婴儿床写的“开关盒”女巫当我在操作员中输入它并且进入第二个数字时不起作用。 我的错在哪里? 这是我的代码:
import java.util.Scanner;
public class MainClass {
public static void main(String args[]){
Scanner NumInput = new Scanner(System.in);
double firstNum = 0;
double secondNum = 0;
double result = 0;
System.out.println("Enter first number: ");
firstNum = NumInput.nextDouble() ;
System.out.println("Enter operator: ");
String amalgar = NumInput.next();
if (amalgar == "sin" || amalgar == "cos" || amalgar == "tan" || amalgar == "cot"){
switch(amalgar){
case "sin":
result = Math.toRadians(Math.sin(firstNum));
break;
case "cos":
result = Math.toRadians(Math.cos(firstNum));
break;
case "tan":
result = Math.toRadians(Math.tan(firstNum));
break;
case "cot":
result = (Math.toRadians(Math.cos(firstNum))/Math.toRadians(Math.sin(firstNum)));
break;
default :
break;
}
System.out.println(Math.toRadians(result));
}
else
System.out.println("Enter second number: ");
secondNum = NumInput.nextDouble();
switch (amalgar){
case "+":
result = firstNum + secondNum;
break;
case "-":
result = firstNum - secondNum;
break;
case "*":
result = firstNum * secondNum;
break;
case "/":
result = firstNum / secondNum;
break;
default:
System.out.println("nemifahmam chi neveeshti");
}
System.out.println(result);
}
}
答案 0 :(得分:1)
问题在于如果条件:
if (amalgar == "sin" || amalgar == "cos" || amalgar == "tan" || amalgar == "cot"){
如果您拥有相同的对象(即两个相同的引用),则==
仅评估为true,但"sin"
(或"cos"
等)和amalgar
始终为2不同的对象。您应该使用equals()
来比较该值。 (见How do I compare strings in Java?)
更好的是,根本不使用if-else块。使用开关,因为如果你不匹配这四个中的一个,你就不会评估除default
案例之外的任何事情,这是空的。