在java中分配和返回对象
我正在尝试在调用getStudent方法后返回的Student对象中分配临时数组中的当前数组元素。。。。我调用了getStudent方法(步骤2),并让temp[I]=分配temp数组中的当前元素,但无法确定它应该如何将其与返回的Student对象配对。当使用getStudent()并运行程序时,输出是输入学生人数,用户输入人数,这就是所发生的一切,它不要求用户输入姓名等,我不确定步骤2是否是问题,或者是否完全存在另一个问题在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
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;i temp[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()]而导致代码无法正常工作的信息
在这一行中,您已经向用户请求了这里有多少学生的inthow_many=input.nextInt();
所以您只需执行temp=new student[how_many]
这确实允许程序继续,但会继续询问超过多少个数字的问题inputted@Brent你改变了我提到的第二件事了吗是的,我改变了第二件事……这一定是一个陈述问题?不完全是sure@Brent你说得对。学生班上有你要的东西吗如果是这样的话,你应该删除它。我添加了一张关于@3kings结果的图片