繁体   English   中英

在java中分配和返回对象

[英]Assigning and returning objects in java

这是我得到的输出 我正在尝试使用调用 getStudent 方法后返回的 Student 对象分配临时数组中的当前数组元素......我调用了 getStudent 方法(步骤 2)并让 temp[i] = 分配了当前元素临时数组,但无法弄清楚它应该= 将它与返回的 Student 对象配对。 当使用 getStudent() 并运行程序时,输出是输入学生人数,用户输入数字,就是这样,它不要求用户输入姓名等,我不是确定第 2 步是问题还是完全存在另一个问题。

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 = new Student[input.nextInt()];

在该行中,您已经要求用户输入学生人数并将其存储在how_many 所以我假设你想做:

temp = new Student[how_many];

还有我在评论中说的:

但是请同时查看您的private static void printStudents(Student[] s)方法,并且实际上在 //step 6 行中我不相信这就是您想要这样做的方式。 相反,你想要System.out.println(s[i]); 不是System.out.println(getStudent()); 为了让我的代码替换工作,您需要覆盖 toString 方法,以便它可以实际显示信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM