Java 专门使用for循环计数

Java 专门使用for循环计数,java,Java,我正在制定一种方法,在这种方法中,一个班级的学生人数最多。我的方法将每个学生添加到一个新的类中,并重复它自己 int count = 0; for (int i = 0; i < totalStudents.length; i++) { //amounts of students totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0,

我正在制定一种方法,在这种方法中,一个班级的学生人数最多。我的方法将每个学生添加到一个新的类中,并重复它自己

    int count = 0;
    for (int i = 0; i < totalStudents.length; i++) { //amounts of students
            totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));
            startingStudentNumber++;
            count++;
            if (count == classes.length) {
                count = 0;
            }
    }
类别:

public Class(final String name, final int students) {
    this.name = name;
    this.students = students;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getStudents() {
    return students;
}

public void setStudents(int students) {
    this.students = students;
}

如果我理解正确,你可以这样做

int currentClass = 0;
int count = 0;
    for (int i = 0; i < totalStudents.length; i++) { //amounts of students
            totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));
            startingStudentNumber++;
            count++;
            if (currentClass >= classes.length) {
              //ran out of room
              break;
            }
            if (count == classes[currentClass].maxStudents){
                count = 0;
                currentClass++;
            }
    }
int currentClass=0;
整数计数=0;
对于(int i=0;i=classes.length){
//房间用光了
打破
}
如果(计数==类[currentClass].maxStudents){
计数=0;
currentClass++;
}
}

也许会有用。如果我正确理解了问题,请告诉我是否有问题。

如果我正确理解了问题,上述解决方案似乎是正确的,但是还有一个更改需要替换

totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));


然而,这会在进入下一节课之前让每一节课都充满学生,而不是将学生均匀地分布在每一节课上。如果您正在查找后者,则循环将更加复杂,最简单的方法是将指定的学生人数存储在课堂的某个位置,以便您可以稍后参考,并在排满的学生人数已满的情况下跳到下一节课。

首先,不要声明类
final
的students变量,那么您必须调用
Setter
并将一个变量添加到
类中的
Getter

int count = 0;
for (int i = 0; i < totalStudents.length; i++) { //amounts of students
        totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));
        class[count].setStudents(class[count].getStudents + 1);
        startingStudentNumber++;
        count++;
        if (count == classes.length) {
            count = 0;
        }
}
并将其添加到您的代码中,如:

class[count].addStudent();

编辑1:

我如何知道一个班级是否已满,以及我是否应该添加任何学生

学生:

private final maxStudents = 25; // For example

要将每个学生添加到不同的班级(尽可能在所有班级中均匀分布,而不是先填充每个班级),您应该向班级添加另一个名为
CurrentStudents
或类似的变量,以保存当前分配给该班级的学生人数

此变量可以从分配学生的循环或学生类构造函数中更新

然后紧接着
count++添加

while (classes[count].getStudents()==classes[count].getCurrentStudents()) {
    count++;
    if (count==classes.length) count=0; }

这将跳过任何已满的课程。当然,您还必须添加一项规定,以确保所有班级中的学生人数不超过空间,否则,试图找到一个空班级时,它将陷入无限循环。

一个学生被添加一次,因为您每次循环都会创建一个新学生。。。你能重新措辞你的问题吗,因为它不那么容易理解…@YassinHajaj我有一大批学生需要加入课堂。每个学生都被添加到不同的班级。(学生1到a班,学生2到b班)。现在,我想数一数已经加入到a班的学生人数。如果每个学生都加入到不同的班级,那么加入到每个班级的学生人数将始终保持不变1@MrWiggles当它到达所有类的末尾时,它返回到索引0并向类a添加一个新学生。直到没有学生离开。你必须在你的学生班级中进行更改,请同时发布这两个班级,好吗?每个学生都被添加到一个不同的班级(学生1到a,学生2到b,等等),如果他们都被添加到一个班级,然后再添加到下一个班级,情况会是这样的。我希望你现在能更好地理解这个问题。这应该是你所说答案下的一个注释。应该是,但我还不能在其他答案中添加注释。我知道一个班级有多少学生,但如果我想将我的班级人数限制在X个学生,该怎么办?如果这个班已经满了,我该如何“推”当前的学生到下一个班。在这种情况下,不会有任何学生。我怎样才能将当前学生添加到下一个类中?你的意思是使用
getStudents()
来获得最大数量的学生吗?这似乎是你设计类的方式,因为你声明这是最终的,是的,这是我的假设。
class[count].addStudent();
int count = 0;
    for (int i = 0; i < totalStudents.length; i++) { //amounts of students
            if (class[count].isFull()){
                --i;
            } else {
                totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));
                class[count].setStudents(class[count].getStudents + 1);
                startingStudentNumber++;
            }
            count++;
            if (count == classes.length) {
                count = 0;
            }
    }
public boolean isFull(){
    return this.students >= maxStudents;
}
private final maxStudents = 25; // For example
while (classes[count].getStudents()==classes[count].getCurrentStudents()) {
    count++;
    if (count==classes.length) count=0; }