我正在制定一种方法,允许一类学生拥有最多的学生。我的方法将每个学生添加到一个新课程并重复自己。
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;
}
}
classes
是类的数组class
。班级class
包含班级名称和可添加的学生数量。现在它将每个学生都添加到下一堂课。
我想就如何计算学生专门加入课堂的时间提供一些指导。
学生:
public Student(int studentNumber, Class classNumber, double studentGrade) {
this.studentNumber = studentNumber;
this.aClass = classNumber;
this.studentGrade = studentGrade;
}
public int getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(int studentNumber) {
this.studentNumber = studentNumber;
}
public String getClassNumber() {
return aClass.getName();
}
public void setClassNumber(Class classNumber) {
this.aClass.setName(classNumber.getName());
}
public Class getAClass() {
return this.aClass;
}
public double getStudentGrade() {
return studentGrade;
}
类别:
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;
}
答案 0 :(得分:0)
如果我能正确理解问题,上述解决方案似乎走在正确的轨道上,但是还有一个更改是替换
totalStudents[i] = new Student(startingStudentNumber, classes[count], randomGrade(1.0, 10.0));
与
totalStudents[i] = new Student(startingStudentNumber, classes[currentClass], randomGrade(1.0, 10.0));
然而,在进入下一堂课之前,这将填补每个班级的学生,而不是在课堂上均匀分布。如果后者是您正在寻找的,那么循环将会更复杂,最简单的方法是将分配的学生数量存储在课程的某个地方,这样您以后可以引用它并跳到下一课程。排队的已经满了。
答案 1 :(得分:0)
首先,不要声明您的学生班级Setter
的变量,然后您必须致电Getter
并在您的class
中添加一个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;
}
}
等级。
public void addStudent(){
this.students += 1;
}
另一种选择是创建
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;
}
}
编辑1:
如何知道课程是否已满,以及我是否应该添加任何学生?
isFull()
public boolean isFull(){
return this.students >= maxStudents;
}
方法看起来像这样:
private final maxStudents = 25; // For example
和maxStudents:
[name-of-the-mailing-list] Original subject line
答案 2 :(得分:0)
要将每个学生添加到不同的课程(尽可能在所有课程中均匀分布,而不是先填写每个课程),您应该将另一个变量添加到名为CurrentStudents
的Class类或类似的东西中,以保留目前被分配到班级的学生人数。
可以从循环分配学生或学生类构造函数更新此变量。
然后在count++;
添加
while (classes[count].getStudents()==classes[count].getCurrentStudents()) {
count++;
if (count==classes.length) count=0; }
这将跳过已满的任何课程。当然,您还必须添加一项规定,确保您在所有课程中没有比空间更多的学生,否则它将被困在无限循环中,试图找到一个空类。
答案 3 :(得分:-1)
如果我理解正确的问题,你可以做这样的事情
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++;
}
}
也许应该工作。如果我不在这里,请告诉我。