Java 灯泡工作-初学者

Java 灯泡工作-初学者,java,Java,我是java新手,所以我有一个初学者问题。 我有一个工作要做,写一个灯泡程序,在里面我必须关闭和打开它。RGBColor类(您将在代码中看到对它的某些引用)是Lightbull类所基于的另一个类。以下是我到目前为止在LightBulb类上完成的代码: 公共级灯泡 { 私人RGBColor_颜色; 私有布尔值切换; 私有最终整数最小值=0; 私人最终整数最大值=255; 公共灯泡(内部红色、内部绿色、内部蓝色) { _颜色=新RGB颜色(红色、绿色、蓝色); _switchedOn=false

我是java新手,所以我有一个初学者问题。 我有一个工作要做,写一个灯泡程序,在里面我必须关闭和打开它。RGBColor类(您将在代码中看到对它的某些引用)是Lightbull类所基于的另一个类。以下是我到目前为止在LightBulb类上完成的代码:


公共级灯泡
{
私人RGBColor_颜色;
私有布尔值切换;
私有最终整数最小值=0;
私人最终整数最大值=255;
公共灯泡(内部红色、内部绿色、内部蓝色)
{
_颜色=新RGB颜色(红色、绿色、蓝色);
_switchedOn=false;
如果((红色<最小值)|(红色>最大值)|(绿色<最小值)|(绿色>最大值)|(蓝色<最小值)|(蓝色>最大值))
{ 
红色=最小值;
绿色=最小值;
蓝色=最小值;
}
}
公共灯泡(RGB彩色)
{
_颜色=新RGB颜色(颜色);
_switchedOn=false;
}
公共灯泡(其他灯泡)
{
_颜色=新RGB颜色(其他颜色);
_switchedOn=false;
}
公共字符串toString()
{
字符串onOrOff;
if(isSwitchedOn()==true)
onOrOff=“On”;
其他的
onorof=“关”;
返回(“(“+”color.getRed()+”、“+”color.getGreen()+”、“+”color.getBlue()+”、“+onorof”);
}
公共RGBColor getColor()
{
返回新的RGB颜色(_颜色);
}
公共空白设置颜色(RGBColor颜色)
{
_颜色=新RGB颜色(颜色);
}
公共布尔值isSwitchedOn()
{
如果((_color.getRed()=0)和(_color.getGreen()=0)和(_color.getBlue()=0))
_switchedOn=false;
其他的
_switchedOn=true;
返回开关打开;
}
公共开关灯()
{
//_switchedOn=!\u switchedOn;//选项1:不将其切换为反向值
if(isSwitchedOn()==true)
_switchedOn=false;
其他的
_switchedOn=true;//选项2:也不会将其切换为反向值
}

似乎您的逻辑对于切换灯光的含义是混合的。在switchLight()方法中,您正确设置了_switchedOn布尔值,但是在isSwitchedOn()中方法,您不是在询问_-switchedOn布尔值,而是在检查颜色,然后根据颜色更改_-switchedOn布尔值。我想说,在这种方法中检查颜色是错误的,因为如果您将颜色设置为0表示它已关闭,而您在任何地方都没有这样做,您就不会在任何地方保留原始颜色。我将改变以下方法

公共布尔值isSwitchedOn()
{
返回开关打开;
}
公共开关灯()
{
_switchedOn=!\u switchedOn;//现在应该可以了。
}

另外,我会检查你的(r,g,b)构造器。如果红色不在范围内,但绿色和蓝色在范围内,会发生什么?这就是你的意图吗?

谢谢你的回答。我已经尝试了你的建议,但问题是,当我以这种方式进行操作时,根据toString方法,即使我按下(255255),灯泡也会“关闭”作为值,这是不正确的。我应该收到“on”…在构造函数中,您将_switchedOn的初始状态设置为false。如果您说如果将非零颜色传递给构造函数,则需要在构造函数中添加该检查,然后将_switchedOn更改为true。当前,您所有的构造函数都将灯泡初始设置为关闭。这不影响无论isSwitchedOn()或switchLight()方法中的代码是什么,ot都会更改。