2016-04-06 2 views
1

this is the output that i get Я пытаюсь назначить текущий элемент массива в массиве 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(); 
    } 
} 
+2

Почему бы не использовать это: 'temp [i] = getStudent(); // Step 2'? – Cootri

+0

при использовании этого и запуске программы выход вводит число студентов, пользователь вводит номер, и это все, что происходит, он не просит пользователя ввести имя и т. Д. – Beeeee

+0

Я вполне уверен что @Cootri сказал, что вы должны делать. Но, пожалуйста, посмотрите также свой 'private static void printStudents (Student [] s)' метод и acutally в строке '// step 6', я не думаю, что так вы хотите это делать. Вместо этого вы хотите 'System.out.println (s [i]);' not 'System.out.println (getStudent());' Для моей подстановки кода работать, хотя вам нужно будет переопределить метод 'toString', чтобы он может резко отображать информацию – 3kings

ответ

1

Так первая проблема заключается в первой на линии:

temp = new Student[input.nextInt()];

в этой строке вы уже попросили пользователя ввести сколько студентов и хранить его в how_many. Так что я предполагаю, что вы хотите вместо этого сделать:

temp = new Student[how_many];

Кроме того, что я сказал в своем комментарии:

Но, пожалуйста, также смотрите на ваш метод private static void printStudents(Student[] s) и acutally на линии // шаге 6 я не верю, что именно так вы хотите это делать. Вместо этого вы хотите System.out.println(s[i]); не System.out.println(getStudent()); Для моей замены кода для работы, хотя вам нужно будет переопределить метод toString, чтобы он мог фактически отображать информацию.

+0

Это позволяет программе продолжать работу, но продолжает задавать вопросы, прошедшие после того, как число введено – Beeeee

+0

@Brent. измените вторую вещь, о которой я упомянул – 3kings

+0

Да, я изменил вторую вещь .... она должна быть проблемой для утверждения? не совсем уверен – Beeeee

 Смежные вопросы

  • Нет связанных вопросов^_^