if语句用整数

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

我有一个与课程一起工作的程序。 我有一个类将validation选择和一个具有我的setter和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))但是这也给了我类似的错误。

我不是百分之百做我能解决的问题所以我想寻求帮助。 我需要将我的条目转换为字符串吗? 现在我的validation器看起来像:

 if (int  3) print "error entry must 1, 2, or 3) else print "invalid entry" 

如果我将我的主要转换为字符串而不是int,我不得不改变这一切吗?

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

 if (menuNumber = 1) 

应该

 if (menuNumber == 1) 

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

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

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


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

这被称为尤达条件 。


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

 if(myString.equals("abc")) 

如果myString为null,则可能产生NullPointerException 。 但:

 if("abc".equals(myString)) 

如果myString为null,则会返回false

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

那是因为=是一个赋值运算符。 您需要使用的是==运算符。

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

 if ($menuNumber = 1) { 

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