Я пытаюсь назначить текущий элемент массива в массиве temp объектом-объектом, возвращаемым после вызова метода getStudent .... Я вызвал метод getStudent (шаг 2) и имел temp [ i] = назначить текущий элемент в массиве temp, но не может понять, что ему следует = связать с возвращенным объектом Student. Когда вы используете getStudent() и запускаете программу, на выходе вводится количество учеников, пользователь вводит номер, и это все, что происходит, он не просит, чтобы пользователь вводил имя и т. Д., Я не убедитесь, что если проблема 2 является проблемой или если есть еще одна проблема.Назначение и возврат объектов в java
import java.util.Scanner;
public class Students
{
private static Scanner input = new Scanner(System.in);
public static void main(String[] args)
{
Student[] students;
students = getStudents();
printStudents(students);
}
private static Student[] getStudents()
{
Student[] temp;
int how_many;
System.out.print("How many students? ");
how_many = input.nextInt();
purgeInputBuffer();
temp = new Student[input.nextInt()]; // Step 1 ???
for (int i = 0; i < temp.length; i++)
{
getStudent(); // Step 2
temp[i] = ; // <----------
}
return temp; // Step 3
}
private static Student getStudent()
{
String name,
address,
major;
double gpa;
System.out.print("Enter name: ");
name = input.nextLine();
System.out.print("Enter address: ");
address = input.nextLine();
System.out.print("Enter major: ");
major = input.nextLine();
System.out.print("Enter GPA: ");
gpa = input.nextDouble();
purgeInputBuffer();
return new Student (name, address, major, gpa); // Step 4
}
private static void printStudents(Student[] s)
{
System.out.println();
for (int i = 0; i < s.length; i++) // Step 5
{
System.out.println(getStudent()); // Step 6
}
}
private static void purgeInputBuffer()
{
// ----------------------------------------------------
// Purge input buffer by reading and ignoring remaining
// characters in input buffer including the newline
// ----------------------------------------------------
input.nextLine();
}
}
Почему бы не использовать это: 'temp [i] = getStudent(); // Step 2'? – Cootri
при использовании этого и запуске программы выход вводит число студентов, пользователь вводит номер, и это все, что происходит, он не просит пользователя ввести имя и т. Д. – Beeeee
Я вполне уверен что @Cootri сказал, что вы должны делать. Но, пожалуйста, посмотрите также свой 'private static void printStudents (Student [] s)' метод и acutally в строке '// step 6', я не думаю, что так вы хотите это делать. Вместо этого вы хотите 'System.out.println (s [i]);' not 'System.out.println (getStudent());' Для моей подстановки кода работать, хотя вам нужно будет переопределить метод 'toString', чтобы он может резко отображать информацию – 3kings