0

メソッドを実装しようとして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」が得られます。

誰かが私が間違ったことを教えてもらえますか?

私はこのウェブサイトを初めて利用するので、今後の参考のためにフィードバックをいただければ幸いです。ありがとうございました。

4

2 に答える 2

8

あなたは言語の「落とし穴」の1つに陥りました

これ...

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ます。==notを使用する必要があります=

更新しました

より良いアプローチは...

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 = "---"

オブジェクトの状態が 2 つしかない場合 (シュートまたははしごのいずれか)、単純に使用できます。

if(isChute) //if isChute is true return true.
    print = "C10";       // toString output = "C10"
else print = "L10";          // toString output == "L10"

2 つ以上の状態を持つことができる場合は、代わりにenumタイプを使用します。

于 2013-03-15T05:19:33.083 に答える
0

isChute は true に割り当てられます。そのため、toString() によって常に「C10」が返されています。それを変更

if(isChute){
    ...
}else if(isLadder){
    ...
}else{
    ..
}
于 2013-03-15T05:31:54.847 に答える