gpt4 book ai didi

java - 显示对象数组的结果

转载 作者:行者123 更新时间:2023-11-29 08:41:18 25 4
gpt4 key购买 nike

这个类编译得很好:

public class Student{
//define variables
static String name;

//define constructor
public Student(String n){
name = n;
}

//define method to display name
public static void displayStudent(){
System.out.println("Name: " + name);
}
}

这是我尝试调用 displayStudent() 方法的类,但我从 for 循环 中收到 java.lang.NullPointerException 异常:

public class MyClass{

//define array of object Student
private Student[] students;

//constructor
MyClass(int size){
Student[] students = new Student[size];
}

//define method to display the students variable
public void displayAllStudents(){
for (int i = 0; i <= students.length; i++){
students[i].displayStudent();
}
}

我试图用 Eclipse 修复它,但它说在 MyClass 中“未使用局部变量 students 的值”。我的错误在哪里?

最佳答案

你在这里创建了一个局部变量

MyClass(int size){
// only exists inside this scope.
Student[] students = new Student[size];
}

但这是该构造函数的局部变量,因此您可以立即将其丢弃。我假设您打算设置 field students

MyClass(int size) {
students = new Student[size];
}

注意:所有这一切都是创建一个对 Students 的引用数组,这些数组都是 null .所以你还需要为每个索引创建一个 Student 对象

MyClass(int size) {
students = new Student[size];
for (int i = 0; i < size; i++)
students[i] = new Student();
}

请注意常见模式是如何使用 <不是<=您的打印循环需要是

for (int i = 0; i < students.length; i++){

for (int i = 0; i <= students.length-1; i++){

因为索引从 0 开始, 如果你有 n元素,最后一个将是 n-1

附注您可能并不是说变量“名称”是静态的。通过将其设为静态,“Student”的所有实例都将共享相同的名称。

关于java - 显示对象数组的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40071253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com