2014-01-17 7 views
1

나는이 문제에 부딪혔을 때 사용자가 선택한 통화를 사용하고 금액을 변환하는 기본 통화 변환기를 만들고 있습니다. 도움과 조언을 부탁드립니다.유형 불일치 : 스캐너에서 부울로 변환 할 수 없음

import java.util.Scanner; 

class Converter { 
    public static void main(String args[]){ 
     double PLN; 
     double GDP; 
     System.out.println("Which currency do you wish to convert?"); 
     System.out.println("Press a corresponding number"); 
     System.out.println("1. Great British Pound (GDP) £"); 
     System.out.println("2.Polish zloty (PLN) zl"); 

     Scanner option = new Scanner(System.in); 

     if (option = 1){    

     }  
    } 
} 

오류

Exception in thread "main" java.lang.Error: Unresolved compilation problems: Type mismatch: cannot convert from Scanner to boolean Type mismatch: cannot convert from int to Scanner at Converter.main(Converter.java:14)

답변

2

그것은 잘못된 여기에 더 같은

Scanner option = new Scanner(System.in); 
String userInput = option.nextLine(); 

if (userInput.equals("1")){    
    // ... 
} 

몇 가지해야한다 : 평등에 대한

  1. 테스트가 ==, 아닙니다 =. Scanner 개체에 1을 할당하려고합니다.
  2. Scanner은 실제로 문자열이 아닙니다. 거기에 readLine으로 전화해야합니다.
  3. Scanner이 문자열 일지라도 Stringint을 비교할 수 없습니다.
  4. 문자열에 .equals을 사용해야합니다. Java에서 ==은 항상 참조 (값이 아님)과 비교되므로 문자열에 대해서는 .equals을 사용해야합니다. ==은 기본적으로 "이 두 객체는 ​​정확히 동일한 객체"이며 "이 두 객체는 ​​동일하게 보이지 않습니다."라는 의미입니다.

다른 방법이 nextInt을 사용하는 것입니다

Scanner option = new Scanner(System.in); 

while (!option.hasNextInt()) { 
    System.out.println("Bad input"); // print an error message 
    option.nextLine(); // clear bad input 
} 
int userInput = option.nextInt(); 
if (userInput == 1) { 
    // ... 
} 

은 또한이 같은 경우에 대한 switch 문을 사용할 수 있습니다 : 당신은 문자열에 switch ES를 사용할 수 있습니다

int userInput = option.nextInt(); 
switch(userInput) { 
case 1: 
    // the user input was 1 
    break; 
case 2: 
    // it was 2 
    break; 
// ... 
default: 
    // it was not any of the cases 
} 

, Java 7 이상에서만 가능합니다.

+3

없음을; 그건 아직도 ​​잘못입니다. 문자열은 참조로 비교됩니다. – SLaks

+1

@SLaks 내 부분에 JS와 Ruby가 너무 많음) – Doorknob

+0

나는 예를 들어서 'readLine'을 사용했기 때문에 3 번째 점을 좋아한다. 왜냐하면 그는 'nextInt'를 사용할 수 있고 point 3은 무의미하다. – nachokk

0

당신은 ....이에서 초기 조건을 변경할 수 :

if (option = 1) //?? 

을 여기에 :

System.out.println("Enter int: "); 
if ((option.nextInt()) == 1) 
//do something 
+0

'nextXXX'의 결과를 어딘가에 저장하면 사용자 데이터를 사용하는'if'가 더 많이 생깁니다. 그렇지 않으면 각각의'if'는 사용자에게 입력을 요구할 것입니다. – Pshemo

관련 문제