【问题标题】:Java calculator wont output the answer [duplicate]Java计算器不会输出答案[重复]
【发布时间】:2013-05-25 04:56:41
【问题描述】:

所以我仍在努力让这个计算器正常工作。关键是它一直要求一个 y 值和一个运算符,直到用户输入“q”。唯一的问题是它不会返回值,并且一旦我输入 q 它就不会停止。之后它只是不断地要求一个 y 值。这是我不断得到的输出示例。我是否必须创建一个额外的变量来保存 y 值来更新它并在之后打印出来?

X: 5 Y: 5 Op: + Y: 5 Op: q Y:

    Scanner keyboard = new Scanner(System.in);

    double x;
    double y;
    String Op;

    System.out.print("X: ");
    x = keyboard.nextDouble();

    do{
        System.out.print("Y: ");
        y = keyboard.nextDouble();
        keyboard.nextLine();
        System.out.print("Op: ");
        Op = keyboard.nextLine();

        if(Op == "+"){
            double result = sum(x,y);
            System.out.println(result);
            }
        else if(Op == "/"){
            double division = div(x,y);
            System.out.println(division);
            }
        else if(Op == "-"){
            double subtraction = sub(x,y);
            System.out.println(subtraction);
            }
        else if(Op == "*"){
            double times = mult(x,y);
            System.out.println(times);
            }
        else if(Op == "q")
            System.out.print("Your last result was: " +y);
    }while(Op != "q");

}   
public static double sum (double a, double b){
    double res = a + b;
    return res;
}
public static double div (double a, double b){
    if(b==0){
        System.out.println("Error, attempted a division by zero");
        return b;
        }
    double divide = a/b;
    return divide;
}
public static double sub (double a, double b){
    double minus = a-b;
    return minus;
}
public static double mult (double a, double b){
    double times = a*b;
    return times;
}

}

【问题讨论】:

  • 使用String.equals...

标签: java function calculator do-while


【解决方案1】:

对于String 比较,您需要使用equalsequalsIgnoreCase 方法。

== 运算符只对 char、int、byte 等基元起作用。对于对象,如 String,则需要使用比较方法。

转换为正确的方法将解决您的问题。示例

if (Op.equalsIgnoreCase("q")){
    ...
}

【讨论】:

    【解决方案2】:

    == 和 != 运算符不适用于字符串。您必须改用 Op.equals("...")。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多