Когда дело доходит до Java, невозможно хранить разные типы данных внутри массивов, как в Python. Однако вы можете создать переменные экземпляра для каждой характеристики c, а затем создать конструктор, в котором вы будете хранить входные данные пользователя для каждого объекта учащегося. Например:
//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;
}
Я вижу, что у вас было для l oop для хранения нового объекта ученика в каждом индексе вашего массива, а затем еще для l oop для хранения переменных для каждого объекта студента , Вы можете сделать все это, используя один для l oop. Внутри вашего l oop вы будете использовать объект сканера для извлечения пользовательского ввода для firstname
, lastname
, age
и id
каждого учащегося. Отсюда вы должны назначить эти переменные для каждого нового создаваемого объекта ученика и сохранить этот объект в массиве учеников. Я добавил несколько операторов печати, чтобы дать пользователю немного больше контекста для своих входов. Затем вы можете использовать System.out.printf()
вместо System.out.println
для форматирования вывода. Что касается остановки вашей программы, когда пользователь вводит «конец», так как вы делали вашу z
переменную, анализирующую как целое число, она ожидает целое число. Вы можете просто исправить это, передавая пользовательский ввод в виде строки и затем анализируя переменную как новую переменную int после вашего оператора if.
Вот код для этого:
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);
}