-1

エラーを修正してください。

public boolean removeStudent(int id)
{
    for (Student student : this)
    {
        if ((student.getID()) == (id)) 
        return true;
        id.remove(); 
    }
    return false; 
}

エラー: int は逆参照できません。ID に基づいてリストから学生を削除しようとしています。しかし、.remove は int と互換性がありません。

4

4 に答える 4

1

idintプリミティブ型なので、メソッドはありません。

id.remove(); //will never compile

コードを次のように変更します

for (int x =0; x < this.size();x++) {
    //your if should contain the removal and the return statements
    if ((this.get(x).getID()) == (id)) {
        this.remove(this.get(x)); 
        return true;
    }
}
return false;
于 2013-03-04T01:51:29.893 に答える
0

コードを再インデントすると、問題が発生します。

public boolean removeStudent(int id)
{
    for (Student student : this)
    {
        if ((student.getID()) == (id)) {
            return true;
        }
        id.remove(); 
    }
    return false; 
}

現在行っていることを確認してください。IDが一致する生徒をヒットすると、すぐにメソッドからジャンプしてtrueを返します。それまでは、反復するすべての生徒を削除します。つまり、一致する生徒が見つかるまで、すべての生徒を削除します。

それは私にはまったく普通に見えません。

私はあなたがしたいことは間違いありません:一致するIDを持つすべての学生を削除します。生徒が削除された場合はtrueを返し、そうでない場合はfalseを返します。

もしそうなら、このコードを理解してみてください:(私はあなたに直接の答えを与えていません。このコードで何が起こっているのかを理解できれば、簡単に修正できます)

// print out only odd numbers in the list, and return true if there is any.
boolean printOdd(List<Integer> numbers) {
  boolean oddFound = false;
  for (int i : numbers) {
    if ((i % 2) != 0) {
        System.out.println("Odd Number Found: " + i);
        oddFound = true;
    }
  }
  return oddFound;
}

コードのその他の問題:

forを使用していないようです-それぞれが正しく見えます。あなたのクラスはコレクションですか?

 for (Type a : b) {...}

bコレクション(より正確には、反復可能)または配列であることが期待されます。

もう1つの問題は、idが整数であるということですが、何ができるid.remove()と思いますか?「remove()」を実行するように整数に指示しています

私はあなたがまたはのようなことをしていると思いますthis.studentList.remove(id)this.studentList.remove(student)

于 2013-03-04T02:01:30.587 に答える
0

そういう意味で電話student.remove()とかするつもりじゃないの?

また、そのコードはその前の行ではヒットしませんreturn true

于 2013-03-04T01:48:26.730 に答える
0

このコードはよく見えません。最初に: remove 呼び出しが間違っており、 if ステートメントが角かっこでカプセル化されていないため、常に remove が呼び出されます。

于 2013-03-04T01:50:56.563 に答える