2013-05-29 76 views
4

所以我仍然试图让这个计算器正常工作。整个观点是它一直要求y值和一个操作员,直到用户输入“q”。唯一的是它不会返回值,它不会停止,一旦我输入q。它只是在不断询问y值。下面是我继续收到的输出的一个例子。我是否必须创建一个额外的变量来保存y值以更新它并在之后将其打印出来?Java计算器不会输出答案

X:5 Y:5 OP:+ Y:5运算: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; 
} 

}

+1

use'String.equals' ... – Reimeus

回答

1

String对于比较则需要使用该方法equalsequalsIgnoreCase

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

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

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

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