繁体   English   中英

布尔值,if-else语句和扫描器?

[英]Booleans, if-else statements, and scanner?

我试图使对一个问题的“是”(或本例中的“ y”)回答为真实的陈述。 对以下问题的任何其他答复都被认为是错误的陈述。

System.out.print("Do you smoke?(y/n): ");
        boolean smoker = console.nextBoolean();
        if (smoker.equalsIgnoreCase("y")) {
            smoker = true;
        } else {
            smoker = false;
        }

我得到错误

HealthPlan.java:32: error: boolean cannot be dereferenced
        if (smoker.equalsIgnoreCase("y")) {
              ^

有谁知道我该如何解决? 我已经在网上搜索过此信息,但不确定。

无法将String转换为boolean ,将console.next行作为String捕获。 检查是否为y,然后将值放入布尔值

String smoker = console.nextLine();
boolean isSmoker = false;
if (smoker.equalsIgnoreCase("y")) {
    isSmoker = true;
}

您在这里有两个问题。

首先,您的可变smokerboolean类型。 这是原始类型。 基本类型不是对象,不能在其上调用方法或属性。 因此,您不能编写smoker.someAttributesmoker.someAttribute smoking.someMethod() 这就是为什么您得到此异常的原因。

其次,您的变量的类型为boolean因此您只能对其影响布尔值。 但是,您尝试对其影响字符串,则它显然会失败。 此错误是第一个错误的隐藏原因。


对于两个问题,解决方案都是相同的。 直接检查控制台输入,或将其传递给String变量,然后检查此变量值。 然后在检查之后,将正确的布尔值影响到smoker

直接检查:

boolean smoker = false;
if(console.nextLine().equalsIgnoreCase("y")){
    smoker = true;
}

带字符串变量

boolean smoker = false;
String consoleInput = console.nextLine();
if(consoleInput.equalsIgnoreCase("y")){
    smoker = true;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM