当前位置: 首页 > 知识库问答 >
问题:

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

欧阳勇军
2023-03-14
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:未解决的编译问题:类型不匹配:无法从Scanner转换为boolean类型不匹配:无法在converter.main(converter.java:14)处从int转换为Scanner

共有1个答案

郭弘方
2023-03-14

应该更像是

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

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

这里有几处不对:

  1. 对相等性的测试是==,而不是=。您正在尝试将1分配给扫描器对象。
  2. 扫描器本身实际上不是字符串。您需要对其调用readline
  3. 即使扫描器是字符串,也不能将字符串int进行比较。
  4. 您需要对字符串使用.equals,因为Java中的==总是通过引用进行比较,而不是通过值进行比较。==的基本意思是“这两个对象是完全相同的对象吗”,而不是“这两个对象看起来一样吗”
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) {
    // ...
}
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
}
 类似资料:
  • 问题内容: 如何将整数转换为布尔值? 问题答案: 尝试使用此返回 或仅使用布尔值开始(使用更好的名称): 它继续使我迷惑人们为什么使用-可怕的变量名。看起来并不传达任何意义。

  • 问题内容: 我有以下几行代码 我认为第3行和第4行执行相同的任务,然后为什么编译器在第4行显示错误“类型不匹配:无法从long转换为int” 请帮忙。 问题答案: 这是因为复合赋值运算符会进行隐式转换。 从JLS复合分配运算符: 形式的复合赋值表达式等效于,其中是的类型,不同之处在于该表达式仅被评估一次。 对于二进制运算符,则必须显式进行强制转换。进行第四项作业: 它会工作。这就是您的复合赋值表达

  • 问题内容: 我正在使用ZXING库在JAVA中创建QR码生成器程序。该程序是 编译该程序时,出现类型不匹配错误, 在这条线 请帮忙!!! 问题答案: 我自己从未使用过该库,但是阅读错误消息时,我会假设您必须要以字节为单位存储字节的问题。问题将是一个字节由多个位组成,因此您不能仅通过一位表示一个字节。 将编码数据存储到ByteMatrix中,然后阅读以下内容: 使用zxing进行QR码编码和解码 完

  • 但它抱怨说: 如何同时解决这两个错误?

  • 问题内容: 我正在“ Java如何编程”一书中做练习。我应该制作一个模拟投币的应用程序。我应该做一个方法(翻转),随机返回硬币的一面。我倾向于使该方法返回1或2,在主方法中,我将值“转换”为硬币的两面。问题是我收到一条错误消息:“类型不匹配- 无法从int转换为boolean”。我真的认为我一直都只使用整数,并且不知道布尔值是如何出现的。 代码如下: 问题答案: 您的密码 应该 您正在为intVa

  • 我创建了一个AsyncTaskLoader: 在我的活动课上,我有这样的内容: