-1
public int removeAll(int i){
    while (head.getData() == i){
        int value = head.getData();
        head = head.getNext();
        return value;
    }
    Node curr = head;
    while (curr.getNext() != null){
        if (curr.getNext().getData() != i){
            int value = curr.getNext().getData();
            curr.setNext(curr.getNext().getNext());
            return value;
        }
        else {
            curr = curr.getNext();
        }

    }

}

関数がネストされており、外側のループにないため、関数に戻り値が指定されていないと言い続けています。これをクリアするにはどうすればそれを引き出すことができますか?

4

4 に答える 4

0

Change your code to:

public int removeAll(int i) {
    int value = 0; //You can check in caller code like if it is 0 (or put your own value like -1) then do something

    while (head.getData() == i) {
        value = head.getData();
        head = head.getNext();
    }

    Node curr = head;
    while (curr.getNext() != null) {

        if (curr.getNext().getData() != i){
            value = curr.getNext().getData();
            curr.setNext(curr.getNext().getNext());
        }
        else {
            curr = curr.getNext();   //In this part, there is no return code
        }

     }
     return value;
}

Since there was at-least one condition which can be satisfied, where there were no return statement, you were getting error. This code should work fine.

于 2013-02-21T04:08:52.057 に答える
0

これが必要だと思います:

Node curr = head;
int value = -1;  // change is here
while (curr.getNext() != null){
    if (curr.getNext().getData() != i){
        value = curr.getNext().getData();  // change is here
        curr.setNext(curr.getNext().getNext());
        break;  // change is here
    }
    else {
        curr = curr.getNext();
    }
}
return value;   // change is here
于 2013-02-21T04:05:34.880 に答える
0

メソッドの while ループでプログラム制御が到達しない場合はどうなりますかremoveAllreturnこの場合、整数値を返すことになっていますが、プログラムはステートメントに到達しません。このコンパイラが原因で、エラーが発生します。

return関数の最後にステートメントを追加します。

于 2013-02-21T04:13:12.053 に答える
0

JLS 8.4.7に準拠して、このプログラムはメソッドが正常に完了できると判断するため、コンパイルに失敗します。

メソッドが戻り値の型を持つように宣言されている場合、メソッドの本体が正常に完了すると、コンパイル時エラーが発生します。

あなたの場合、 for ループに入らずに何も返さずにプログラムが終了する可能性があります。

于 2013-02-21T04:14:09.783 に答える