我对Java比较陌生。我得到了一个赋值,我必须输出一个显示其属性的类的对象,并打开它。对象是一个'粉丝',我可以打印我创建的FAB类的所有属性,除非打开它。 这是我的一些代码
public class Fan {
private boolean on = false;
public Fan ( int newSpeed, boolean newOn, double newRadius, String newColor ) {
setSpeed(newSpeed);
setRadius(newRadius);
setColor(newColor);
}
public boolean isOn () {
return true;
}
public void setOn ( boolean newOn ) {
if (on) {
on=newOn;
}
}
public String toString ( ) {
{
if (on)
{
return "Fan is Turned on";
}
else
{
return "Fan is Turned off";
}
}
}
这是粉丝类的对象
public class TestApplication {
public static void main (String[] args) {
Fan testfan1 = new Fan(5, false, 10, "blue");
System.out.println(testfan1.getSpeed() + " " + testfan1.getColor() + " "
+ testfan1.getRadius() + " " + testfan1.isOn());
}
}
尝试了很多方法,但我得到输出'true'而不是粉丝开启
答案 0 :(得分:5)
我看到了一些错误:
您正在使用=
运算符在if
语句中进行比较。 =
运算符是Java中的赋值运算符。使用==
进行比较。
if (on == true)
如果您要比较的是布尔值(这里就是这种情况),只需提供布尔值:
if (on)
另外,在isOn
方法中,您总是返回true
,我认为您打算返回on
。
答案 1 :(得分:4)
if (on = true) {
我认为你的意思是
if (on == true) {
简化为
if (on) {
Captcha:语言where =用作赋值而不是:=,尽管看起来像==,并且它不是在if体中使用=的警告
编辑:另外:
public boolean isOn () {
return true;
}
为什么不return on
?
此外:
如果在设置变量时打印'风扇已打开''风扇已关闭'等,则当您1)通过isOn获取变量时,不会发生这种情况2)连接字符串以便发送到println。
修改
public string ToString()
{
if (on)
{
return "Fan is Turned on";
}
else
{
return "Fan is Turned off";
}
}
System.out.println(testfan1);