This question already has answers here:
Why does my if condition not accept an integer in java?
(7个答案)
1年前关闭。
我是Java新手。我正在寻找家庭作业方面的帮助。我最初不会发布完整的代码,但我认为它不会帮助我学习。
我有一个与类(class)一起工作的程序。我有一个可以验证选择内容的类,一个有我的设置者和getter者的类,以及一个由教授用该程序的IO编码的类(这是一本addres书)
我的主要陈述是这样的:
如果您查看我的if语句
我不是100%可以解决此问题的方法,所以我想寻求帮助。我需要将条目转换为字符串吗?现在,我的 validator 看起来像:
如果我将main转换为字符串而不是int,是否还必须全部更改呢?
再次感谢您对我的帮助,我还没那么出色,我想把大部分的工作都淘汰掉。
应该
前者将值1分配给
收到
这是各种语言的常见混淆。我认为您可以设置Java编译器来警告您其他可能发生此错误的情况。
某些语言中使用的技巧是反过来进行比较:
这被称为Yoda Condition。
在Java中,如果使用
如果
将应付,并且如果
(7个答案)
1年前关闭。
我是Java新手。我正在寻找家庭作业方面的帮助。我最初不会发布完整的代码,但我认为它不会帮助我学习。
我有一个与类(class)一起工作的程序。我有一个可以验证选择内容的类,一个有我的设置者和getter者的类,以及一个由教授用该程序的IO编码的类(这是一本addres书)
我的主要陈述是这样的:
//create new scanner
Scanner ip = new Scanner(System.in);
System.out.println();
int menuNumber = Validator.getInt(ip, "Enter menu number: ", 1, 3);
if (menuNumber = 1)
{
//print address book
}
else if (menuNumber = 2)
{
// get input from user
}
else
{
Exit
}
如果您查看我的if语句
if (menuNumber = 1)
,我会看到一条红线,告诉我我无法将int转换为boolean。我以为答案是if (menuNumber.equals(1))
,但这也给了我类似的错误。我不是100%可以解决此问题的方法,所以我想寻求帮助。我需要将条目转换为字符串吗?现在,我的 validator 看起来像:
if (int < 1)
print "Error entry must be 1, 2 or 3)
else if (int > 3)
print "error entry must 1, 2, or 3)
else
print "invalid entry"
如果我将main转换为字符串而不是int,是否还必须全部更改呢?
再次感谢您对我的帮助,我还没那么出色,我想把大部分的工作都淘汰掉。
最佳答案
if (menuNumber = 1)
应该
if (menuNumber == 1)
前者将值1分配给
menuNumber
,后者测试menuNumber
是否等于1。收到
cannot convert an int to boolean
的原因是Java希望if(...)
构造中为 boolean 值-但是menuNumber
是int
。表达式menuNumber == 1
返回一个 boolean 值,这是需要的。这是各种语言的常见混淆。我认为您可以设置Java编译器来警告您其他可能发生此错误的情况。
某些语言中使用的技巧是反过来进行比较:
(1 == menuNumber)
,这样,如果您不小心键入=
,您将得到编译器错误,而不是无提示的错误。这被称为Yoda Condition。
在Java中,如果使用
.equals()
方法(不是==
)比较对象,则可以使用类似的技巧,并且其中之一可以为null:if(myString.equals("abc"))
如果
NullPointerException
为null,则可能会生成myString
。但:if("abc".equals(myString))
将应付,并且如果
false
为null,则只返回myString
。10-01 01:48