我正在尝试实施toString
方法,toString
的输出取决于boolean
变量。以下是我的班级和主要内容。
public class Cell {
public int addSpaces;
boolean isEmpty;
boolean isChute;
boolean isLadder;
public Cell() {
addSpaces = 10; //I initialized addSpaces to 10 for testing purpose
}
public boolean isChute() { //first boolean method
if (addSpaces == -10) {
return true;
} else {
return false;
}
}
public boolean isLadder() {//second boolean method
if (addSpaces == 10) {
return true;
} else {
return false;
}
}
public boolean isEmpty() { //third boolean method
if (addSpaces == 0) {
return true;
} else {
return false;
}
}
public String toString() {
String print;
if (isChute = true) //if isChute is true return true.
{
print = "C10"; // toString output = "C10"
} else if (isLadder = true) // if isLadder is true return true
{
print = "L10"; // toString output == "L10"
} else {
print = "---"; // else toString print output = "---"
}
return print;
}
public static void main(String[] arg) {
Cell s = new Cell();
System.out.println(s.addSpaces);
System.out.println(s);
}
}
无论toString
的输入状态如何,我基本上都得到相同的输出“C10”。
有人可以告诉我我做错了吗?
我是这个网站的新手,所以我感谢任何反馈,以供将来参考。谢谢。
答案 0 :(得分:8)
你已陷入其中一种语言“陷阱”
此...
if(isChute = true) //if isChute is true return true.
print = "C10"; // toString output = "C10"
else if (isLadder = true) // if isLadder is true return true
print = "L10"; // toString output == "L10"
else
print = "---"
实际上是将true
分配给isChute
。您应该使用==
而不是=
<强>更新强>
更好的方法是......
if(isChute) //if isChute is true return true.
print = "C10"; // toString output = "C10"
else if (isLadder) // if isLadder is true return true
print = "L10"; // toString output == "L10"
else
print = "---"
如果对象只有两种状态(滑槽或梯子),你可以简单地使用
if(isChute) //if isChute is true return true.
print = "C10"; // toString output = "C10"
else print = "L10"; // toString output == "L10"
如果它可以有超过2个状态,那么我会使用enum
type代替。
答案 1 :(得分:0)
isChute被指定为true。所以“C10”一直由toString()返回。 改变它
if(isChute){
...
}else if(isLadder){
...
}else{
..
}