toString 和布尔值
toString and booleans
我正在制作一个 class 的灯泡,我必须 on/off 说明它是否烧坏,以及它的颜色。无论出于何种原因,我得到了正确的东西来切换,但是我的 toString 打印了错误的答案,我无法弄清楚为什么。我不习惯使用布尔值,因此我的代码可能不支持我的逻辑。有人可以帮忙吗?
代码如下:
public class Light
{
// Variables that will be initialized in the Light constructors.
private boolean on;
private boolean burntOut;
private String color = "";
// Default constructor that sets the bulb to on, not burnt out, and "white".
public Light()
{
on= true;
burntOut = false;
color = "white";
}
// This constructor sets the variable "on" to the parameter o. The burntOut
// variable is set to the parameter b. If burntOut
// is true, on is set to false, no matter what value is stored in o.
// The color variable is set to the parameter c only if c is "red", "green"
// or "blue". The constructor ignores the case of the value in c. If c holds
// any value other than "red", "green" or "blue", the constructor sets
// color to "white".
public Light(boolean o, boolean b, String c)
{
on = o;
burntOut=b;
if(burntOut=true){
on = false;
}
else{
on= o;
}
if(c.equalsIgnoreCase("red")){
color = "red";
}
if(c.equalsIgnoreCase("blue")){
color = "blue";
}
if (c.equalsIgnoreCase("green")){
color="green";
}
else {
color = "white";
}
}
// The toString method returns a String with the Light in the format:
// off red burnt out
// on green not burnt out
//
// Notice there is one space between "off"/"on" and the value for color,
// and a tab before the "burnt out" or "not burnt out".
public String toString()
{
String x ="";
if(on = true){
x+="on" + " ";
}
if(on = false){
x+= "off" + " ";
}
x+= color;
if (burntOut = false){
x+="\t" + "not burnt out";
}
if(burntOut = true){
x+= "\t" + "burnt out";
}
return x;
}
这是项目允许我运行显示我的结果的测试:
> run Light
1。测试灯()
* PASS: on 设置正确 (true)
通过:burntOut 设置正确(假)
通过:颜色设置正确(白色)
* 失败:toString 没有按预期工作(白色烧坏)
- 测试灯(布尔值 b,布尔值 o,字符串 c)
* PASS: on 设置正确(false)
通过:burntOut 设置正确(真)
通过:颜色设置正确(绿色)
* 失败:toString 没有按预期工作(绿色烧坏)
这个:
if(on = true){
您不是在比较,您是在分配值。要进行比较,请使用 ==
:
if(on == true){
或者,更简单:
if(on){
(注意:您的代码中有多个地方存在此错误。这仅说明其中一个。请相应地修复其他地方。)
我正在制作一个 class 的灯泡,我必须 on/off 说明它是否烧坏,以及它的颜色。无论出于何种原因,我得到了正确的东西来切换,但是我的 toString 打印了错误的答案,我无法弄清楚为什么。我不习惯使用布尔值,因此我的代码可能不支持我的逻辑。有人可以帮忙吗?
代码如下:
public class Light
{
// Variables that will be initialized in the Light constructors.
private boolean on;
private boolean burntOut;
private String color = "";
// Default constructor that sets the bulb to on, not burnt out, and "white".
public Light()
{
on= true;
burntOut = false;
color = "white";
}
// This constructor sets the variable "on" to the parameter o. The burntOut
// variable is set to the parameter b. If burntOut
// is true, on is set to false, no matter what value is stored in o.
// The color variable is set to the parameter c only if c is "red", "green"
// or "blue". The constructor ignores the case of the value in c. If c holds
// any value other than "red", "green" or "blue", the constructor sets
// color to "white".
public Light(boolean o, boolean b, String c)
{
on = o;
burntOut=b;
if(burntOut=true){
on = false;
}
else{
on= o;
}
if(c.equalsIgnoreCase("red")){
color = "red";
}
if(c.equalsIgnoreCase("blue")){
color = "blue";
}
if (c.equalsIgnoreCase("green")){
color="green";
}
else {
color = "white";
}
}
// The toString method returns a String with the Light in the format:
// off red burnt out
// on green not burnt out
//
// Notice there is one space between "off"/"on" and the value for color,
// and a tab before the "burnt out" or "not burnt out".
public String toString()
{
String x ="";
if(on = true){
x+="on" + " ";
}
if(on = false){
x+= "off" + " ";
}
x+= color;
if (burntOut = false){
x+="\t" + "not burnt out";
}
if(burntOut = true){
x+= "\t" + "burnt out";
}
return x;
}
这是项目允许我运行显示我的结果的测试:
> run Light
1。测试灯() * PASS: on 设置正确 (true) 通过:burntOut 设置正确(假) 通过:颜色设置正确(白色) * 失败:toString 没有按预期工作(白色烧坏)
- 测试灯(布尔值 b,布尔值 o,字符串 c) * PASS: on 设置正确(false) 通过:burntOut 设置正确(真) 通过:颜色设置正确(绿色) * 失败:toString 没有按预期工作(绿色烧坏)
这个:
if(on = true){
您不是在比较,您是在分配值。要进行比较,请使用 ==
:
if(on == true){
或者,更简单:
if(on){
(注意:您的代码中有多个地方存在此错误。这仅说明其中一个。请相应地修复其他地方。)