重新缩进你的代码,你会看到问题:
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-each 外观。你的班级是收藏吗?
for (Type a : b) {...}
期望b
是一个集合(更准确地说,Iterable)或一个数组。
另一个问题是,id 是一个整数,你期望 anid.remove()
做什么?你告诉一个整数做“remove()”
我假设您正在做类似的事情this.studentList.remove(id)
or this.studentList.remove(student)
?