toString Java中的if-else
对于我的类,我遇到了一个问题,我必须创建一个名为Fan的类。然后,我被告知分配不同的字段,其中一个是布尔值,如果为true,则表示风扇打开。最后我们被告知 名为toString Java中的if-else,java,if-statement,tostring,Java,If Statement,Tostring,对于我的类,我遇到了一个问题,我必须创建一个名为Fan的类。然后,我被告知分配不同的字段,其中一个是布尔值,如果为true,则表示风扇打开。最后我们被告知 名为toString()的方法,用于返回风扇的字符串描述。如果风扇是 启用时,该方法在一个组合字符串中返回风扇转速、颜色和半径。如果 如果风扇未打开,该方法将返回风扇颜色和半径以及字符串 一个组合字符串中的“风扇关闭”。 编写一个演示类,创建两个风扇对象。为第一个风扇指定以下值: 速度:1000rpm,半径:12,颜色:蓝色,风扇状态:开启。
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
语句中警告您的赋值。此代码甚至不会编译,请编辑它。如果是,则编辑以添加说明。我想确保=
和==
之间的区别是明确的,这样无论数据类型如何,将来都可以避免错误。