0
我是新来的java,所以我有一个初学者的问题。 我有一个工作要做,编写一个灯泡程序,在这个程序中我必须关闭它。 RGBColor类(您将在代码中看到它的某些引用)是LightBulb类所基于的另一个类。下面是我到目前为止已经做了灯泡类的代码:LightBulb工作 - 初学者
public class LightBulb
{
private RGBColor _color;
private boolean _switchedOn;
private final int MIN_VAL = 0;
private final int MAX_VAL = 255;
public LightBulb(int red, int green, int blue)
{
_color = new RGBColor(red, green, blue);
_switchedOn = false;
if((red < MIN_VAL) || (red > MAX_VAL) || (green < MIN_VAL) || (green > MAX_VAL) || (blue < MIN_VAL) || (blue > MAX_VAL))
{
red = MIN_VAL;
green = MIN_VAL;
blue = MIN_VAL;
}
}
public LightBulb(RGBColor color)
{
_color = new RGBColor(color);
_switchedOn = false;
}
public LightBulb(LightBulb other)
{
_color = new RGBColor(other._color);
_switchedOn = false;
}
public String toString()
{
String onOrOff;
if(isSwitchedOn() == true)
onOrOff = "On";
else
onOrOff = "Off";
return ("(" + _color.getRed() + "," + _color.getGreen() + "," + _color.getBlue() + ")" + ", " + onOrOff);
}
public RGBColor getColor()
{
return new RGBColor(_color);
}
public void setColor(RGBColor color)
{
_color = new RGBColor(color);
}
public boolean isSwitchedOn()
{
if((_color.getRed() == 0) && (_color.getGreen() == 0) && (_color.getBlue() == 0))
_switchedOn = false;
else
_switchedOn = true;
return _switchedOn;
}
public void switchLight()
{
//_switchedOn = !_switchedOn; // option 1: Doesn't switch it to the reversed value
if(isSwitchedOn() == true)
_switchedOn = false;
else
_switchedOn = true; // option 2: Doesn't switch it to the reversed value either
}
当我建立一个灯泡的对象,并试图实现switchLight()方法,我不是接收到反向值...我很乐意知道您是否对我有提示,我该如何接收它。
谢谢!
谢谢你的回答。我尝试了你的建议,但事情是,当我这样做时,根据toString方法,即使当我将(255,255,255)作为值放入灯泡时,灯泡也是“关闭”,而不是正确。我应该收到“on”... – user6351755
在您的构造函数中,您将_switchedOn的初始状态设置为false。如果你说如果一个非零颜色传递给构造函数,你最初想让光线开启,那么你需要在构造函数中添加该校验,然后将_switchedOn改为true。目前,您的所有构造函数都将灯泡设置为关闭状态。无论isSwitchedOn()或switchLight()方法中的代码如何,这都不会改变。 –