在使用数组Java更新值后循环使用ArrayList

时间:2018-01-31 01:45:24

标签: java arrays for-loop arraylist foreach

我正在寻找部分程序的帮助。我想知道如何在删除或保留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!");
        }
    }
}

提前非常感谢你!

1 个答案:

答案 0 :(得分:2)

看来你的整数数组包含了每个学生的所有学分。学生x有4个学分,下一个学生有7个学分,等等。如果这是真的,称之为更新绝对没有意义。更恰当地命名变量,否则,这个例子肯定很难理解。为什么不将学分与学生对象相关联,在循环练习时调用 getCredits()之类的方法来检查学分。此外,在您的学生对象中,您可以拥有一个 isGraduate 字段,它是一个布尔值,并说明该学生是否符合毕业资格。每次学生获得学分时都会检查此值。因此会定期检查。

这段代码非常令人困惑,你在循环学生数量的同时循环学生数量......你不能这样做。

此外,您似乎在输出中调用方法名称​​ .remove 。不知道这个方法做了什么,但是我没有看到这个应放在 System.out.println 中的情况......如果该方法从列表中删除了学生,这是要分别弄乱你的循环并导致问题。

目前尚不清楚你的目标是什么,如果你不确定你想要实现什么,不幸的是,没有人会在这里帮助你。