if语句用整数

时间:2012-02-28 23:32:29

标签: java

我是Java新手。我正在寻找家庭作业的帮助。我不会发布我最初做的完整代码,但我不认为它会帮助我学习它。

我有一个使用类的程序。我有一个类将验证一个选择和一个有我的setter和getter的类,以及一个教授用该程序的IO编写的类(这是一个地址簿)

我的主要声明就是这样说的

//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%就我能做些什么来修复它所以我想寻求帮助。我需要将我的条目转换为字符串吗?现在我的验证器看起来像:

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,我不得不改变这一切吗?

再次感谢你帮助我,我没有那么棒,而且我希望得到一大部分作业被淘汰出局。

3 个答案:

答案 0 :(得分:13)

if (menuNumber = 1)

应该是

if (menuNumber == 1)

前者将值1赋给menuNumber,后者测试menuNumber是否等于1。

获得cannot convert an int to boolean的原因是Java期望if(...)构造中的布尔值 - 但menuNumberint。表达式menuNumber == 1返回一个布尔值,这是所需要的。

这是各种语言的常见混淆。我认为您可以设置Java编译器以警告您此错误的其他可能情况。


在某些语言中使用的技巧是以相反的方式进行比较:(1 == menuNumber)因此,如果您不小心输入=,您将收到编译器错误而不是静默错误。

这称为Yoda Condition


在Java中,如果使用.equals()方法(而不是==)比较对象,则可以使用类似的技巧,其中一个可以为null:

if(myString.equals("abc"))
如果NullPointerException为空,

可能会生成myString。但是:

if("abc".equals(myString))

将会处理,如果false为空,则会返回myString

答案 1 :(得分:3)

  

我得到一条红线,告诉我我无法将int转换为布尔值。

多数民众赞成因为=是一个赋值运算符。您需要使用的是==运算符。

答案 2 :(得分:2)

单个等号是赋值:您以这种方式为变量赋值。使用两个等号(==)进行比较:

if ($menuNumber = 1) { 

更新:忘记美元符号:$menuNumber