Calculator in java,sin cos tan cot



当我在运算符中输入sin、cos、tan、cot时,我为它们写的"switch case"开关不起作用,它将进入第二个数字。我的错在哪里?这是我的代码:

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);
    }
}

问题在于这个if条件:

if (amalgar == "sin" || amalgar == "cos" || amalgar == "tan" || amalgar == "cot"){

如果具有相同的对象(即两个相同的引用),但"sin"(或"cos"等)和amalgar始终是两个不同的对象,则使用==只能计算为true。您应该使用equals()来比较该值。(请参阅如何在Java中比较字符串?)

更好的是,不要使用if-else块。使用switch,因为如果您不匹配这四个案例中的一个,那么除了空的default案例之外,您将不会评估任何内容。

最新更新