[英]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;
}
您在这里有两个问题。
首先,您的可变smoker
为boolean
类型。 这是原始类型。 基本类型不是对象,不能在其上调用方法或属性。 因此,您不能编写smoker.someAttribute
或smoker.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.