2014-01-17 183 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. 測試相等是==,NOT =。您正嘗試將1分配給Scanner對象。
  2. Scanner本身實際上並不是一個字符串。你需要撥打readLine就可以了。
  3. 即使Scanner是一個字符串,也不能將Stringint進行比較。
  4. 對於字符串,您需要使用.equals,因爲Java中的==總是按參考進行比較,而不是按值計算。 ==基本上的意思是「這兩個對象是完全相同的對象,」不是「這兩個對象看起來是否一樣。」

的另一種方法是使用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語句像這樣的情況:

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 
} 

您可以在字符串中使用switch ES,但僅限於Java 7或更高版本。

+3

沒有;這仍然是錯誤的。字符串通過參考進行比較。 – SLaks

+1

@SLaks哎呀,我的部分JS和Ruby太多了;) – Doorknob

+0

我喜歡你的第三點,它與你的例子相關,因爲你使用'readLine'因爲他可以使用'nextInt'而點3是毫無意義的 – nachokk

0

你可以從....這改變你的初始條件:

if (option = 1) //?? 

這樣:

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

將'nextXXX'的結果存儲在某處,以防使用用戶數據時會出現更多'if'。否則,這些「if」中的每一個都會要求用戶輸入。 – Pshemo

相關問題