【问题标题】:How to use void methods如何使用 void 方法
【发布时间】:2014-11-17 21:13:16
【问题描述】:

我需要显示以下信息

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()

通过要求用户输入每个对象的名称和 ID 号来填充数组 存储在数组中

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 方法显示?我尝试了很多不同的东西,但我无法弄清楚

【问题讨论】:

  • 这里可能的错字:Student[] array = new Student[0];我认为 0 实际上应该是来自输入的整数变量“数组”。话虽如此,您将变量名称数组重新用于静态 int 和 Student[] 数组。一般来说,我建议永远不要使用“数组”这个词作为变量名。像“students”或“student”这样的词更合适。
  • 在您的 Student 类中创建一个 ToString 方法,该方法返回一个带有名称和 ID 的字符串。然后,您可以遍历 Student[] 数组并在每个对象上调用 toString。您的代码有很多非常基本的问题,您需要去找您的教授/助教/老师(createArray 要求输入但随后将其丢弃,重复变量名......等等)。您的 Student 对象实际上看起来还不错,但 StudentTest 有点灾难。

标签: java arrays methods void


【解决方案1】:

您必须根据自己的逻辑解决一些问题。以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 种不同的方法来实现这个微不足道的功能,但它应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 2011-01-17
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    相关资源
    最近更新 更多