Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java计算器不会输出答案_Java_Function_Calculator_Do While - Fatal编程技术网

Java计算器不会输出答案

Java计算器不会输出答案,java,function,calculator,do-while,Java,Function,Calculator,Do While,所以我仍在努力使这个计算器正常工作。关键是它要一直请求y值和运算符,直到用户输入“q”。唯一的问题是,它不会返回值,而且一旦我输入q,它也不会停止。它只是在事后不断要求y值。这是我一直得到的输出的一个例子。我是否必须创建一个额外的变量来保存y值以更新它并在以后打印出来 X:5Y:5OP:+Y:5OP:QY: Scanner keyboard = new Scanner(System.in); double x; double y; String Op;

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

X:5Y:5OP:+Y:5OP:QY:

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

}

对于
字符串
比较,您需要使用方法
equals
equalsIgnoreCase

=
运算符仅适用于原语,如char、int、byte等。对于对象,如String,需要使用比较方法

转换到正确的方法将解决您的问题。范例

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

==和!=运算符不适用于字符串。您必须使用Op.equals(“…”)。

使用
String.equals
。。。