gpt4 book ai didi

java - 循环对象私有(private)数组

转载 作者:行者123 更新时间:2023-12-01 13:26:32 26 4
gpt4 key购买 nike

我确信我的循环代码是错误的,但我一生都看不到它是什么。

我必须创建一个 Student(String name, double gpa) 对象。

我有一个 Classroom 类,它初始化一个私有(private)数组 students[]。我询问用户要创建多少个学生。我使用循环询问每个学生的姓名和 gpa,然后使用 add(Student aStudent) 方法将其添加到数组中。我的方法应该检查单元格是否为空。如果是,则添加该对象。如果没有,请转到下一个单元格。我无法创建多个 Student 对象。

我还有一个 get 方法来返回特定数组单元格的引用。

这里是类 Classroomaddget 方法。变量由赋值设置。

public class Classroom {

private boolean hasSpace = false;
int maxClassroomSize;
private Student students[];

public Classroom (int size){
maxClassroomSize = size;
students = new Student[maxClassroomSize];


}



public boolean add (Student aStudent) {
for(int i = 0; i <=(students.length-1); i++)
{
if (students[i] == null) {
students[i] = aStudent;
hasSpace = true;
} else hasSpace = false;
} return hasSpace;
}


public Student getStudent(int position){
return students[position];

}

}

这是我的主要方法:

import java.util.Scanner;

public class Program {



public static void main(String[] args) {


int classSize;
int numberStudentsInput;
double gpa = 0;
String studentName = null;
Student student1 = new Student();

Scanner sc = new Scanner(System.in);
System.out.println("How big is this class?");
classSize = sc.nextInt();

Classroom classroom = new Classroom(classSize);

do{
System.out.println("How many students are enrolled in this class?");
numberStudentsInput = sc.nextInt();

if (numberStudentsInput>classSize)
System.out.println("Too many students for the class size. Please try again. ");

} while (numberStudentsInput >classSize);



for (int i=0; i<=(numberStudentsInput-1);i++) {


Scanner sc2 = new Scanner(System.in);
System.out.println("What is the student's name: ");
studentName = sc2.nextLine();
student1.setName(studentName);

System.out.println("What is the student's GPA");
gpa = sc2.nextDouble();
student1.setGPA(gpa);
classroom.add(student1);
}

System.out.println(student1.getName(classroom.getStudent(0)));
System.out.println(student1.getName(classroom.getStudent(1)));


}

}

我正在输出数组单元格 0 和 1 的名称来查看结果,但它似乎只保留最新的输入。因此,如果我输入“John”和“Paul”作为名称,则两个单元格的输出都将是“Paul”。

我认为我的添加方法是正确的,但我肯定是错的......我做错了什么?

感谢您的参与!

最佳答案

您正在向所有单元格添加相同的 Student 对象。因此,当您更改该对象时,您会在已有该对象的旧单元格中以及要添加该对象的新单元格中更改它。您说您“无法创建多个 Student 对象”。我不明白为什么不,但这就是你问题的核心。

关于java - 循环对象私有(private)数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com