Calculatrice en java, sin cos tan cot [dupliquer]


Cette question a déjà une réponse ici:

Le "cas de commutation" que j'ai écrit pour sin,cos,tan,cot ne fonctionne pas lorsque je les entre dans l'opérateur et il va entrer le deuxième numéro. Où est ma faute? Voici mon code:

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

    }
}
Author: Satya, 2015-11-21

1 answers

Le problème réside dans cette condition if:

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

L'utilisation de == ne vaut true que si vous avez le même objet (c'est-à-dire deux références identiques) mais "sin" (ou "cos", etc.) et amalgar sont toujours deux objets différents. Vous devriez utiliser equals() à la place pour comparer la valeur. (voir Comment comparer les chaînes en Java?)

Mieux encore, n'utilisez pas du tout le bloc if-else. Utilisez switch, car si vous ne correspondez pas à l'un de ces quatre, vous n'évaluerez rien d'autre que votre cas default , qui est vide.

 1
Author: Linus, 2017-05-23 11:44:30