2015-11-21 3 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

Смежные вопросы