【发布时间】:2023-01-12 11:54:51
【问题描述】:
我正在尝试从一个简单程序中的对象数组访问一个对象。几个小时以来,我一直在摸不着头脑。
当我尝试使用其索引值从对象数组中调用该对象时,输出是错误的。
问题:我试图从三个学生那里获取详细信息并将它们存储在 objects 中。 学生s[]=新学生[2]; 但是当我尝试访问 s[i].getName() 时出现错误。它说 s[i] 为空。您可以看到如下所示的输出。
在 do-while 循环中获取三个学生的详细信息,直到 q!=1 作为条件。
这是我的模型类:
public class Student {
private String name;
private String id;
private int phoneNumber;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
这是我的主要
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Student s[]=new Student[2]; //I want to use an array of objects like this.
Scanner name=new Scanner(System.in);
Scanner ID=new Scanner(System.in);
Scanner phoneNumber=new Scanner(System.in);
int q=1;
do{
int i=0;
System.out.println("Enter Name");
String nameInput=name.nextLine();
s[i].setName(nameInput);
System.out.println("Enter ID");
String IDInput=ID.nextLine();
s[i].setName(IDInput);
System.out.println("Enter Phone Number");
int phoneNumberInput=phoneNumber.nextInt();
s[i].setPhoneNumber(phoneNumberInput);
i++;
} while(q!=1);
System.out.println("Name:" +s[0].getName());
System.out.println("Name:" +s[1].getName());
System.out.println("Name:" +s[2].getName());
System.out.println("ID:" +s[0].getId());
System.out.println("ID:" +s[1].getId());
System.out.println("ID:" +s[2].getId());
System.out.println("Phone:" +s[0].getPhoneNumber());
System.out.println("Phone:" +s[1].getPhoneNumber());
System.out.println("Phone:" +s[2].getPhoneNumber());
}
}
输出:
Enter Name
John
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Student.setName(String)" because "s[i]" is null
at Main.main(Main.java:28)
【问题讨论】: