【问题标题】:Looping through ArrayList after updating values with array Java [closed]用数组Java更新值后循环遍历ArrayList [关闭]
【发布时间】:2018-07-10 00:50:40
【问题描述】:

我正在就我的程序的一部分寻求帮助。我想知道如何在删除或保留 ArrayList 中的“学生”之前遍历整个“学生”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!");
        }
    }
}

非常感谢您!

【问题讨论】:

标签: java arrays for-loop arraylist foreach


【解决方案1】:

您的整数数组似乎包含每个学生的所有学分。学生 x 有 4 个学分,下一个学生有 7 个学分,依此类推。如果这是真的,称其为更新完全没有意义。更恰当地命名你的变量,否则,这个例子肯定很难遵循。为什么不将学分与 Student 对象相关联,并在循环时调用像 getCredits() 这样的方法来检查他们的学分。此外,在您的学生对象中,您可以有一个字段 isGraduate,它是一个布尔值,表示学生是否有资格毕业。每次学生获得学分时都会检查此值。因此它会定期检查。

这段代码非常混乱,你在循环学生人数的同时循环学生人数......你不能那样做。

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

目前尚不清楚您的目标是什么,如果您不确定自己要达到的目标,那么很遗憾,这里没有人能够帮助您。

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    相关资源
    最近更新 更多