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()方法中的代碼如何,這都不會改變。 –