if和else声明

时间:2013-03-15 05:17:36

标签: java

我正在尝试实施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”。

有人可以告诉我我做错了吗?

我是这个网站的新手,所以我感谢任何反馈,以供将来参考。谢谢。

2 个答案:

答案 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{
    ..
}