2014-11-17 5 views
-2

мне нужно просматривать следующую информацию:Как использовать недействительные методы

Enter size of array: 3 
Enter student name: jane doe 
Enter student id number: 14234567 
Enter student name: john doe 
Enter student id number: 12345678 
Enter student name: peter griffin 
Enter student id number: 14238251 
Array Contents 
jane doe 14234567 
john doe 12345678 
peter griffin 
14238251 

я должен использовать следующие методы

Просить пользователь для размера они хотят массив быть и затем создать массив типа Студент указанного размера.

public static Student[] createArray() 

Для того, чтобы заполнить массив, задавая пользователю ввести имя и идентификационный номер для каждого объекта хранится в массиве

public static void populateArray(Student[] array) 

Для отображает содержимое массива

public static void displayArray(Student[] array) 

Это то, что у меня есть

class Student { 

    //private instances 
    private String name = "unassigned"; 
    private long idNumber = 0; 

    //Default constructor 
    public Student() { 
    name = "Not Given"; 
    idNumber = 0; 
    } 

    //Constructs a new Student with passed name and age parameters. 
    public Student(String studentName, long studentIdNumber) { 
    name = studentName; 
    idNumber = studentIdNumber; 
    } 

    //Returns the name of this student. 
    public String getName() { 
     return name; 
    } 

    // Returns the idNumber of this person. 
    public long getIdNumber() { 
     return idNumber; 
    }  

    //Sets the name of this student. 
    public void setName(String studentName) { 
     name = studentName; 
    } 

    //Sets the idNumber of this student. 
    public void setIdNumber(long studentIdNumber) { 
     idNumber = studentIdNumber; 
    } 


} // end class 

и

import java.util.Scanner; 

public class StudentTest { 

    static int array; 

    //create method createArray 
    public static Student[] createArray() { 

     Scanner int_input = new Scanner(System.in); 

     //user enters size of array   
     System.out.print("Enter Size of Array: "); 
     array = int_input.nextInt(); 

     //create array 
     Student[] array = new Student[0];     
     return array;//return array 

    }//end method 

    //create method populateArray 
    public static void populateArray(Student[] array) { 

     try (Scanner string_input = new Scanner(System.in); 
      Scanner long_input = new Scanner(System.in);) 
     {    
      for (int i = 0; i < 3; i++) { 
       Student arrays = new Student(); 

       //set name 
       System.out.println("Enter Student Name: "); 
       arrays.setName(string_input.nextLine()); 

       //set ID number 
       System.out.println("Enter Student ID Number: "); 
       arrays.setIdNumber(long_input.nextLong()); 

       System.out.println(); 

      }//end for loop 
     }//end try loop        
    }//end method 

    //create method display Array 
    public static void displayArray(Student[] array){ 

     System.out.println("Array Contents"); 
     System.out.println(); 

    }//end method 

    public static void main(String [] args){ 

     //display createArray method 
     System.out.println(createArray()); 

     //display populateArray method 
     System.out.println(); 

     //display array contents 
     System.out.println(); 

    }//end main method 
}//end class 

мой вопрос, как я могу получить метод populateArray, чтобы позволить мне войти в него данные, а затем отобразить его? и получить отображаемый метод displayArray? Я пробовал несколько разных вещей, но я не могу понять это

+0

Возможная опечатка здесь: Student [] array = new Student [0]; Я думаю, что 0 действительно должно быть целочисленной переменной «array», начиная с ввода. При этом вы повторно используете массив имен переменных для вашего статического массива int и Student []. В общем, я бы рекомендовал никогда не использовать слово «массив» в качестве имени переменной. Что-то вроде «студенты» или «студент» будет лучше. – Shark

+1

Создайте метод 'ToString' в классе' Student', который возвращает строку с именем и идентификатором. Затем вы можете перебирать массив 'Student []' и просто вызывать 'toString' для каждого объекта. У вас есть много принципиальных проблем с вашим кодом, вам нужно обратиться к своему профессору/TA/teacher ('createArray' запрашивает ввод, но затем отбрасывает его, дублирует имена переменных ... и т. Д. И т. Д.). Ваш объект «Студент» выглядит нормально, «StudentTest» - это немного катастрофа. – tnw

ответ

0

Вы должны исправить несколько вещей в соответствии с вашей логикой. Начните с main:

public static void main(String [] args) { 
    // create array of size specified by user 
    Student[] students = createArray(); 

    // populate this array with data from user 
    populateArray(students); 

    // finally, display array contents 
    displayArray(students); 

}//end main method 

В createArray создать и вернуть массив нужного размера:

// read user input as arraySize 
return new Student[arraySize]; 

В populateArray убедитесь, что вы изменить переданный массив с данными пользователя, а именно:

for (int i = 0; i < 3; i++) { 
    Student student = new Student(); // new student 

    //set name 
    System.out.println("Enter Student Name: "); 
    student.setName(scanner.nextLine()); 

    //set ID number 
    System.out.println("Enter Student ID Number: "); 
    student.setIdNumber(scanner.nextLong()); 

    inputArray[i] = student; // put new student into array passed to the method 

}//end for loop 

И, наконец, в displayArray просто перебирайте элементы и печатайте их в нужном вам формате:

public static void displayArray(Student[] students){ 

    for (Student s : students) { 
     System.out.println(String.format("Name = %s, id = %d", s.getName(), s.getIdNumber()); 
    } 
}//end method 

И, конечно, вам не нужно иметь 3 разных метода для реализации этой тривиальной функциональности, но она должна работать.

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