为什么我的基本计算器在String输入后不会处理

时间:2013-05-02 03:35:27

标签: java

该程序应该是一个基本的计算器,它接受两个双输入,然后提示用户输入一个带有相应数学运算符的字符串。由于某些原因,在用户输入与菜单对应的String后,我的基本计算器不会返回值。

 import java.util.Scanner;  
    public class Assignment3 {  
        public static void main (String[] args)  
     {
        String operator = "";
        double userInputOne;
        double userInputTwo;
        double output = -.00001;
        String comparison = "";


         Scanner scan = new Scanner(System.in);

         System.out.println("Enter the first number of your calculation:");
         userInputOne = scan.nextDouble();

         System.out.println("Enter the second number of your calculation:");
         userInputTwo = scan.nextDouble();

          System.out.println("Type in one direction under Calculator Options:");
          System.out.println("Add, Subtract, Multiply, Divide, Mod");
          System.out.println("Compare");
          System.out.println("Print Numbers");
          System.out.println("Quit");
          Scanner scanTwo = new Scanner(System.in);
          operator = scanTwo.nextLine();

        if (operator == "Add")
        {
            output = userInputOne + userInputTwo;
        }else if (operator == "Subtract"){
            output = userInputOne - userInputTwo;
        }else if (operator == "Multiply"){
            output = userInputOne * userInputTwo;
        }else if (operator == "Divide"){
            output = userInputOne / userInputTwo;
        }else if (operator == "Mod"){
            output = userInputOne % userInputTwo;
        }else if (operator == "Compare"){
            if(userInputOne == userInputTwo){
                comparison = (userInputOne + " Is equal to " +      userInputTwo);
                System.out.println(comparison);
            }else if (userInputOne > userInputTwo){
                comparison = (userInputOne + " Is greater than " + userInputTwo);
                System.out.println(comparison);
            }else if (userInputOne < userInputTwo){
                comparison = (userInputOne + " Is less than " + userInputTwo);
                System.out.println(comparison);
            }
        }else if (operator == "Print Numbers"){
            comparison = userInputOne + "  " + userInputTwo;
            System.out.println(comparison);
        }else if (operator == "Quit"){
            System.exit(0);
        }


        if (output != -.00001){
        System.out.println(output);
        }

}

}

3 个答案:

答案 0 :(得分:4)

您无法将字符串与需要==

operator.equals()进行比较

例如,而不是operator == "Subtract"使用"Subtract".equals(operator)

答案 1 :(得分:2)

对于字符串值比较,您需要使用String#equals()方法。

==用于对象参考比较。

因此,您的所有operator比较都必须如下: -

if ("Add".equals(operator))

答案 2 :(得分:0)

问题是使用==来比较字符串。您使用的是哪个Java版本?如其他人所述,您可以使用equals()代替,但从Java 7开始,您可以使用switch进行字符串比较:

switch (operator) {

    case "Add":
        utput = userInputOne + userInputTwo;
        break;

    case "Subtract":
        utput = userInputOne - userInputTwo;
        break;

    case "Multiply":
        utput = userInputOne * userInputTwo;
        break;

    // ...

    default:
       // optional default statement
       break;
} 

请注意每个break末尾的case语句,以防止堕落。

Oracle Java Tutorials中提供了更多信息(向下滚动到“在交换机语句中使用字符串”)。