我正在寻找部分程序的帮助。我想知道如何在删除或保留ArrayList中的“student”之前循环遍历整个“students”ArrayList。 updateStatus方法参数是一个int并返回一个布尔值:如果学生有毕业所需的学分数,则返回true;如果学生没有足够的学分,则返回false。如果您希望我发布updateStatus的代码(我知道100%准确地工作),我可以这样做。
以下是我遇到问题的for循环:
ArrayList<Student> students = new ArrayList<Student>();
int [] updates = {4, 7, 8, 6, 15, 10, 30, 31, 5, 7, 127, 21}; //this is the array of values being input to updateStatus
for (int i = 0; i < students.size(); i++){
for(Student x: students){
if(x.updateStatus(updates[i])){
System.out.println(students.remove(i)+"\nCongratulations Graduate!");
}
}
}
提前非常感谢你!
答案 0 :(得分:2)
看来你的整数数组包含了每个学生的所有学分。学生x有4个学分,下一个学生有7个学分,等等。如果这是真的,称之为更新绝对没有意义。更恰当地命名变量,否则,这个例子肯定很难理解。为什么不将学分与学生对象相关联,在循环练习时调用 getCredits()之类的方法来检查学分。此外,在您的学生对象中,您可以拥有一个 isGraduate 字段,它是一个布尔值,并说明该学生是否符合毕业资格。每次学生获得学分时都会检查此值。因此会定期检查。
这段代码非常令人困惑,你在循环学生数量的同时循环学生数量......你不能这样做。
此外,您似乎在输出中调用方法名称 .remove 。不知道这个方法做了什么,但是我没有看到这个应放在 System.out.println 中的情况......如果该方法从列表中删除了学生,这是要分别弄乱你的循环并导致问题。
目前尚不清楚你的目标是什么,如果你不确定你想要实现什么,不幸的是,没有人会在这里帮助你。