コードを再インデントすると、問題が発生します。
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)
?