-1

请帮我修复错误。

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

错误:无法取消引用 int。我正在尝试根据 id 从列表中删除学生。但是 .remove 与整数不兼容。

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-each 外观。你的班级是收藏吗?

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

期望b是一个集合(更准确地说,Iterable)或一个数组。

另一个问题是,id 是一个整数,你期望 anid.remove()做什么?你告诉一个整数做“remove()”

我假设您正在做类似的事情this.studentList.remove(id)or this.studentList.remove(student)

于 2013-03-04T02:01:30.587 回答
0

你不是要打电话student.remove()或类似的事情吗?

此外,该代码不会被return true它之前的行击中。

于 2013-03-04T01:48:26.730 回答
0

这段代码看起来不太好。首先: remove 调用是错误的,并且总是调用 remove ,因为您的 if 语句没有用括号封装。

于 2013-03-04T01:50:56.563 回答