2013-06-27 2 views
0

간단한 계산기를 만들고 사용자가 "오류"를 표시하려고 할 때 제목에 오류가 계속 나타나려고합니다. 주어진 조작 유형 중 하나에 들어 가지 않습니다.Java- 구문 토큰 오류 "! =",이 토큰 다음에 예상되는 이름

import java.util.Scanner; 

public class experiments { 
    public static void main(String args[]) { 
     Scanner userInput = new Scanner(System.in); 
     String operation; 
     double fNum, sNum, ans; 

     //select type of operation 
     System.out.println("Type addition, subtraction, multiplication, or division, then press enter"); 
     operation = userInput.nextLine(); 
     if (operation!=("addition","subtraction","multiplication","division")) { 
      System.out.println("error"); 
     } 

     //enter numbers 
     System.out.println("Enter first number"); 
     fNum = userInput.nextDouble(); 
     System.out.println("Enter second number"); 
     sNum = userInput.nextDouble(); 

     //calculate 
     if (operation.equals("addition")) { 
      ans=fNum + sNum; 
     } 
     else if (operation.equals("subtraction")) { 
      ans=fNum - sNum; 
     } 
     else if (operation.equals("multiplication")){ 
      ans=fNum * sNum; 
     } 
     else if (operation.equals("division")) { 
      ans=fNum/sNum; 
     } 
     //print answer 
     System.out.println("The answer is "); 
     System.out.println(ans);  
    } 
} 

답변

1

자바

if (!"addition".equals(operation) && 
    !"subtraction".equals(operation) && 
    !"multiplication".equals(operation) && 
    !"division".equals(operation)) { 
    // Handle error... 
} 
+0

난 당신이'싶은 생각 확인하기 위해 이것을 사용 && ', 처음 두 달리 한 것은 사실로 보장된다. – Kevin

+0

두 배 음원 사랑 : P – MadProgrammer

+0

@Kevin 방금 한 개로 감쌀 수있었습니다! (...) block : P – MadProgrammer

1

당신은 ArrayList을 만들어 놓아야합니다 ... 당신은 개별적으로 하나 하나 확인해야합니다, 대신 ...

if (operation!=("addition","subtraction","multiplication","division")) { 

이 명령을 이해 할 수 없음 거기에 가치.
그러면 값이 ArrayList에 있는지 확인할 수 있습니다. 그와 마찬가지로
:
How Arrays.asList(...).contains(...) works?

+0

+1 혹독한 생각을 위해서 – MadProgrammer

+0

@MadProgrammer thx – Alex

+0

또한'List # contains'라고 생각합니다. 이미'List'이므로'Arrays'를 사용할 필요가 없습니다 : P – MadProgrammer

2

당신은이 같은 개체 그룹에 물건을 비교할 수 없습니다 :

operation!=("addition","subtraction","multiplication","division") 

아마도 당신이 원하는 "operation 다음 네 가지 중 하나가 아닌 경우". 몇 가지 옵션이 있습니다. 지금 가지고있는 것과 가장 가까운 것은 ArrayList (예 : legalOperations)에 4 가지 법적 조작이 포함 된 새로운 메시지를 작성한 다음 legalOperations.contains(operation)을 사용하는 것입니다.

그러나 "더 나은 Java"인 더 깨끗한 방법은 enum을 만들고 비교를 사용하는 것입니다.

public enum LegalOperations { 
    ADDITION, 
    SUBTRACTION, 
    MULTIPLICATION, 
    DIVISION 
} 

그런 다음 당신은 당신의 열거에 비교를 할 수있는 (아마도 당신은 예를 들어, 열거 그것을 각 열거 형 정수에 대한 명확한 문자열 값 및 isLegalOperation 방법을 가질 수 있도록하는 생성자를 줘야 할 것).

0

if (operation!=("addition","subtraction","multiplication","division"))은 Java에서의 잘못된 비교입니다. 여러 if 문과 함께 Java 7 또는 string.equals 메소드를 사용하는 경우 switch 문을 사용하십시오.

0

당신은이 같은 방법을 포함 사용할 수 있습니다 : 나는 당신이 그 일을 하나 개 더 쉬운 방법이 있습니다

if (!( operation.equals("addition") || operation.equals("subtraction") || 
      operation.equals("multiplication") || operation.equals("division"))) { 
       System.out.println("error"); 
     } 
0

하는 적은

을 기록하는 것이며

문자열 배열을 가지고 있으므로 배열로 선언하십시오.

String [] operations = {"addition", "subtraction", "multiplication", "division"}; 

다음

if(!Arrays.asList(operations).contains(operation)) { 
    System.out.println("error"); 
} 
+0

이러한 조건이 사실 일지라도이 인쇄 오류가 발생하지 않습니까? –

+0

@AmalMurali 이러한 조건 중 하나가 true 인 경우에도 if 문에 대한 최종 결과는 false입니다. 지정된 입력이 조건 중 하나가 아닌 경우 if에 대한 최종 결과는 true이고 오류 –

0

같은를 다시 할 수 있다고 생각

String[] operations = {"addition","subtraction","multiplication","division"}; 
if(!operations.contains(operation)) { 
    ... 
+0

을 인쇄합니다. 'List'를 만드는 것이 더 쉽습니다 (IMHO). 그러면 임시로 짧은 문자를 만들 필요가 없습니다. 당신이 비교하기를 원할 때마다 살았던 물체 – MadProgrammer

관련 문제