gpt4 book ai didi

java - 尝试创建一个对象数组,数组的长度和数组中的对象均由用户确定

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

Scanner nos = new Scanner(System.in);

上面我有一个循环,循环遍历由用户输入确定的学生人数的长度。从那里开始,他们应该填写四个不同的属性:名字、姓氏、年龄和 ID,这四个属性构成一个对象。 System.out.println("请输入学生人数");

int z = Integer.parseInt(nos.nextLine());

if (nos.equals("end") | nos.equals("End") | nos.equals("END")) {
System.exit(0);
}
System.out.println("Number of Students is " + z);

Student[] Students = new Student[z];

数组长度是预先确定的,然后根据对象的数量和所有属性,打印一个数组,以四个属性的形式显示所有对象。

for (int i = 0; i < z; i++) {

Students[i] = new Student();

for (int g=0; g<z; g++) {

Students[i] = new Student[] {firstname + "," + lastname + "," + age + "," + id};

System.out.println(Students[i]);

我在处理字符串和整数的数据类型时遇到了问题,并且找不到创建这两种数据类型的数组的好方法。此外,如果用户在任何时候输入 end,代码将停止运行。 }

最佳答案

对于 Java,不可能像 Python 那样在数组中存储不同的数据类型。不过,您可以做的是为每个特征创建实例变量,然后创建一个构造函数,在其中存储每个学生对象的用户输入。像这样:

//instance variables
String firstName;
String lastName;
int age;
int id;

//constructor for Student class
public Student(String firstName, String lastName, int age, int id) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.id = id;
}

我看到您有一个 for 循环来在数组的每个索引中存储一个新的学生对象,然后另一个 for 循环来存储每个学生对象的变量。实际上,您可以使用一个 for 循环来完成所有这些操作。在循环内部,您将使用扫描仪对象来检索每个学生的 firstnamelastnameageid< 的用户输入。/。从这里,您将为创建的每个新学生对象分配这些变量,并将该对象存储在学生数组中。我添加了一些打印语句,为用户的输入提供更多背景信息。然后,您可以使用 System.out.printf() 而不是 System.out.println 来格式化输出。至于当用户输入“end”时程序停止,因为您将 z 变量解析为整数,所以它需要一个整数。您可以简单地解决这个问题,方法是将用户的输入作为字符串传递,然后在 if 语句之后将变量解析为新的 int 变量。

这是代码:

Scanner nos = new Scanner(System.in);

String z = nos.next();

if (z.equals("end") || z.equals("End") || z.equals("END")) {
System.exit(0);
}

System.out.println("Enter number of students: ");

int studentNumber = Integer.parseInt(z);
System.out.println("Number of Students is " + studentNumber + "\n");

Student[] students = new Student[studentNumber];


for (int i = 0; i < students.length; i++) {
System.out.println("Enter student " + (i+1) + "\'s first name:");
String firstname = nos.next();

System.out.println("Enter student " + (i+1) + "\'s last name:");
String lastname = nos.next();

System.out.println("Enter student " + (i+1) + "\'s age:");
int age = nos.nextInt();

System.out.println("Enter student " + (i+1) + "\'s id:");
int id = nos.nextInt();

students[i] = new Student(firstname, lastname, age, id);

System.out.printf("Student %d: %s, %s, %d, %d\n", i + 1, students[i].firstName, students[i].lastName, students[i].age, students[i].id);
}

如果您想显示数组内的所有信息,您可以按照前面的代码执行以下操作:

System.out.println("\nAll students in array:" );
for(int i = 0; i < students.length; i++) {
System.out.printf("Student %d: %s, %s, %d, %d\n", i + 1, students[i].firstName, students[i].lastName, students[i].age, students[i].id);
}

关于java - 尝试创建一个对象数组,数组的长度和数组中的对象均由用户确定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61353275/

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