如果在toString Java中

-2 java if-statement tostring

对于我的班级,我遇到了一个问题,我必须创建一个名为Fan的类.然后我被告知要分配不同的字段,其中一个是一个调用的布尔值,如果真的意味着风扇打开了.最后被告知这一点

一个名为的方法toString(),返回风扇的字符串描述.如果风扇打开,则该方法返回一个组合字符串中的风扇速度,颜色和半径.如果风扇未打开,则该方法将返回扇形颜色和半径以及一个组合字符串中的"扇形关闭"字符串.编写一个创建两个Fan对象的Demo类.为第一个风扇分配以下值:speed:1000rpm,radius:12,color:blue和fan-state:on.将以下值分配给第二个风扇:速度:2000rpm,半径:5,颜色:蓝色和扇形状态:关闭.通过调用toString方法显示对象.

所以我继续上课,

包p2 ;

public class Demo {

public static void main(String[] args) {
    Fan f1 = new Fan(1000, true, 12, "blue");
    Fan f2 = new Fan(2000, false, 5, "blue");
    // 1000rpm, radius: 12, color: blue, and fan-state: on
    //speed: 2000rpm, radius: 5, color: blue, and fan-state: off

    System.out.println(f1);
    System.out.println("----------------------------");
    System.out.println(f2);
}
}
Run Code Online (Sandbox Code Playgroud)

包p2 ;

public class Fan {

private int speed;
private boolean on;
private double radius;
private String color;

public Fan()
{
    speed = 0;
    on = false;
    radius = 0;
    color = "none";
}

public Fan(int speed, boolean on, double radius, String color) {
    this.speed = speed;
    this.on = on;
    this.radius = radius;
    this.color = color;
}

public int getSpeed() 
{
    return speed;
}

public void setSpeed(int speed) 
{
    this.speed = speed;
}

public boolean isOn() 
{
    return on;
}

public void setOn(boolean on) 
{
    this.on = on;
}

public double getRadius() 
{
    return radius;
}

public void setRadius(double radius) 
{
    this.radius = radius;
}

public String getColor() 
{
    return color;
}

public void setColor(String color) 
{
    this.color = color;
}

public String toString()
{
    if(on = true)
    {
        return "Fan Speed: " + getSpeed() + "rpm" + "\nFan Color: " + getColor() + "\nFan Radius: " + getRadius();
    }
    else
        return "*Fan is off*" + "\nFan Color: " + getColor() + "\nFan Radius: " + getRadius();
}

}
Run Code Online (Sandbox Code Playgroud)

在运行之后,我发现每次运行它时,无论我的一个Fan对象是否为false,它仍将返回true语句.有帮助吗?谢谢!

Tub*_*uby 6

也许你不应该滥用赋值和比较运算符.

if(on = true)

你想要的是什么

if(on)


Joh*_*ohn 5

这是因为你说if (on = true),当你的意思if (on == true).赋给第一ontrue(意味着每次打印的风扇时,它会改变ontrue).同时,第二次检查是否on等于true.既然on是布尔值,你总是可以说if(on).