在java中分配和返回对象

在java中分配和返回对象,java,object,return,assign,Java,Object,Return,Assign,我正在尝试在调用getStudent方法后返回的Student对象中分配临时数组中的当前数组元素。。。。我调用了getStudent方法(步骤2),并让temp[I]=分配temp数组中的当前元素,但无法确定它应该如何将其与返回的Student对象配对。当使用getStudent()并运行程序时,输出是输入学生人数,用户输入人数,这就是所发生的一切,它不要求用户输入姓名等,我不确定步骤2是否是问题,或者是否完全存在另一个问题 import java.util.Scanner; public c

我正在尝试在调用getStudent方法后返回的Student对象中分配临时数组中的当前数组元素。。。。我调用了getStudent方法(步骤2),并让temp[I]=分配temp数组中的当前元素,但无法确定它应该如何将其与返回的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();
  }
}
import java.util.Scanner;
公立班学生
{
专用静态扫描仪输入=新扫描仪(System.in);
公共静态void main(字符串[]args)
{
学生[]学生;
students=getStudents();
学生(学生);
}
私人静态学生[]getStudents()
{
学生[]临时工;
int多少;
系统输出打印(“有多少学生?”);
how_many=input.nextInt();
purgeInputBuffer();
temp=new Student[input.nextInt()];//步骤1???
对于(int i=0;itemp[i]=;//所以第一个问题首先出现在线路上:

temp=新学生[input.nextInt()];

在这一行中,您已经要求用户输入多少学生,并将其存储在
how_many
中。因此,我假设您希望改为:

temp=新学生[人数];

还有我在评论中所说的:


但请同时查看您的
私有静态void println students(Student[]s)
方法,并准确地在线//步骤6我不相信您希望这样做。相反,您希望
System.out.println(s[i]);
而不是
System.out.println(getStudent())
要使我的代码替换工作,尽管您需要重写toString方法,以便它可以实际显示信息

为什么不使用此方法:
temp[i]=getStudent();//第2步
?当使用它并运行程序时,输出是输入学生人数,用户输入人数,这就是所发生的一切,它不要求用户输入姓名,etcI我很确定@Cootri所说的是你应该做的。但也请看一下你的
私人静态学生(学生[]s)
方法,并准确地在第6步
//我不相信这是你想要的。相反,你想要的是
System.out.println(s[i]);
不是
System.out.println(getStudent())
要使我的代码替换工作,尽管您需要重写
toString
方法,以便它能够准确显示由于行
temp=new Student[input.nextInt()]而导致代码无法正常工作的信息
在这一行中,您已经向用户请求了这里有多少学生的int
how_many=input.nextInt();
所以您只需执行
temp=new student[how_many]
这确实允许程序继续,但会继续询问超过多少个数字的问题inputted@Brent你改变了我提到的第二件事了吗是的,我改变了第二件事……这一定是一个陈述问题?不完全是sure@Brent你说得对。学生班上有你要的东西吗如果是这样的话,你应该删除它。我添加了一张关于@3kings结果的图片