2013-05-29 3 views
4

그래서이 계산기를 올바르게 작동 시키려고합니다. 요점은 사용자가 "q"를 입력 할 때까지 y 값과 연산자를 계속 요청하는 것입니다. 유일한 것은 값을 반환하지 않을 것이고 일단 q를 입력하면 멈추지 않을 것이라는 것입니다. 나중에 y 값을 계속 요청합니다. 나는 계속 출력물의 예를 들고있다. y 값을 유지하고 나중에 업데이트하려면 추가 변수를 만들어야합니까?자바 계산기가 대답을 출력하지 않습니다

X : 5 Y : 5 연산 : + 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

'String.equals' 사용 ... – Reimeus

답변

1

String를 들어 비교하면 방법 equals 또는 equalsIgnoreCase을 사용해야합니다.

== 연산자는 char, int, byte 등의 프리미티브에서만 작동합니다. String과 같은 객체의 경우 비교 방법을 사용해야합니다.

올바른 방법으로 변환하면 문제가 해결됩니다. 예

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

== 및! = 연산자는 문자열에 대해 작동하지 않습니다. 대신 Op.equals ("...")를 사용해야합니다.

관련 문제