toString Java中的if-else

toString Java中的if-else,java,if-statement,tostring,Java,If Statement,Tostring,对于我的类,我遇到了一个问题,我必须创建一个名为Fan的类。然后,我被告知分配不同的字段,其中一个是布尔值,如果为true,则表示风扇打开。最后我们被告知 名为toString()的方法,用于返回风扇的字符串描述。如果风扇是 启用时,该方法在一个组合字符串中返回风扇转速、颜色和半径。如果 如果风扇未打开,该方法将返回风扇颜色和半径以及字符串 一个组合字符串中的“风扇关闭”。 编写一个演示类,创建两个风扇对象。为第一个风扇指定以下值: 速度:1000rpm,半径:12,颜色:蓝色,风扇状态:开启。

对于我的类,我遇到了一个问题,我必须创建一个名为Fan的类。然后,我被告知分配不同的字段,其中一个是布尔值,如果为true,则表示风扇打开。最后我们被告知

名为
toString()
的方法,用于返回风扇的字符串描述。如果风扇是 启用时,该方法在一个组合字符串中返回风扇转速、颜色和半径。如果 如果风扇未打开,该方法将返回风扇颜色和半径以及字符串 一个组合字符串中的“风扇关闭”。 编写一个演示类,创建两个风扇对象。为第一个风扇指定以下值: 速度:1000rpm,半径:12,颜色:蓝色,风扇状态:开启。将以下值指定给 第二扇: 速度: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);
}
}
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();
}

}
包装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);
}
}
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();
}

}

运行这个之后,我发现每次运行它时,不管我的一个Fan对象是否为false,它仍然会返回true语句。有什么帮助吗?谢谢

也许您不应该误用赋值运算符和比较运算符

if(on=true)

你想要的是


if(on)

这是因为你说的是
if(on=true)
,而你的意思是
if(on=true)
。第一个将
on
指定为
true
(意味着每次打印风扇时,风扇将
on
更改为
true
)。同时,第二个检查
on
是否等于
true
。由于
on
无论如何都是一个布尔值,所以只要说
if(on)

如果(开=真)

那是你的问题是赋值运算符==是比较运算符。 由于赋值运算符的返回值是赋值,因此station的计算结果为
if(true)

如果将代码更改为
if(on==true)
或仅将
if(on)
更改为
if(on)
,它将在您编写的if块中起作用,这是一个将on的值更改为true的赋值


您应该使用
on==true
将on的值与true进行比较。一个简写版本是,如果(on),只需使用
,因为
(on)
本身的计算方式与
(on==true)
相同

打字有点小失误:

使用

或者只是

if(on)
相反


=
用于赋值,
=
用于比较。

如果您使用了一个好的IDE,它会在
If
语句中警告您的赋值。此代码甚至不会编译,请编辑它。如果是,则编辑以添加说明。我想确保
=
==
之间的区别是明确的,这样无论数据类型如何,将来都可以避免错误。