类型不匹配:无法从扫描程序转换为布尔值

时间:2014-01-17 01:37:54

标签: java

我正在制作基本的货币转换器,用户可以选择货币并转换金额,显然没有完成,因为我遇到了这个问题。帮助和指示将不胜感激。

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){            

        }       
    }   
}

错误

  

线程“main”中的异常java.lang.Error:未解决的编译问题:       类型不匹配:无法从扫描程序转换为布尔值       类型不匹配:无法从int转换为Scanner       在Converter.main(Converter.java:14)

2 个答案:

答案 0 :(得分:2)

应该更像是

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

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

这里有些不妥之处:

  1. 测试平等是==,而不是=。您正尝试将1分配给Scanner对象。
  2. Scanner 本身实际上不是字符串。您需要在其上拨打readLine
  3. 即使Scanner是字符串,也无法将Stringint进行比较。
  4. 您需要将.equals用于字符串,因为Java中的==始终按引用进行比较,而不是按值进行比较。 ==基本上意味着“这两个对象完全相同的对象”,而不是“这两个对象看起来是否相同。”
  5. 另一种方法是使用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或更高版本。

答案 1 :(得分:0)

你可以......改变你的初始状态:

if (option = 1) //??

到此:

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