2015-11-21 258 views
1

当我在运算符中输入sin,cos,tan,cot时写入的“开关盒”女巫不起作用,它会输入第二个数字。 我的错在哪里? 这里是我的代码:java中的计算器,sin cos tan cot

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

    } 
} 

回答

1

问题在于这一点,如果条件:

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

使用==只有当你有相同的对象(即两个相同的引用),但"sin"计算结果为真(或"cos"等)和amalgar总是两个不同的对象。您应该使用equals()来比较值。 (请参阅How do I compare strings in Java?

更好的是,不要使用if-else块。使用开关,因为如果你不匹配其中的一个,你将不会评估除default这个空的任何东西。

+0

例如:cos 0 = 1但它显示了一些像3.48965那样的东西,为什么? – Decimal