if和else语句
我试图执行toString
方法,并且toString
的输出取决于boolean
变量。以下是我的课程和主要内容。if和else语句
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”。
有人能告诉我我做错了什么吗?
我是新来这个网站,所以我很感激任何反馈,以备将来参考。谢谢。
你已经掉进语言 “陷阱”
这一个...
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。
我这个方法的第一意图是检查布尔值是否为真,并且toString的输出取决于这些情况。我的方法错了吗?谢谢。 – Phong 2013-03-15 05:33:54
不,你的方法没有错,但你试图确定状态的方式是 – MadProgrammer 2013-03-15 05:35:18
我试过实现你的第一个方法,输出是“---”。这似乎是if和else if语句是错误的。我尝试了一种不同的方法来检查我的布尔方法。的System.out.println(s.isLadder); System.out.println(s.isChute); System.out.println(s.isEmpty);并且输出是错误的,错误的,错误的。这是否会成为影响if语句的原因?谢谢 – Phong 2013-03-15 05:43:57
你应该有==内,如果不= – rajesh 2013-03-15 05:18:51
您作为使用赋值运算符=进行比较,因此只有第一个条件执行所有的时间。使用== – 2013-03-15 05:19:00
谢谢@rajesh&Sudhanshu:是的,我尝试使用if(==)而不是if(=),但输出为“---”。通过在if语句中使用==,它会跳过if和else if语句并转到else语句。 – Phong 2013-03-15 05:25:08