gpt4 book ai didi

java - 在 Java 中填充对象数组

转载 作者:行者123 更新时间:2023-11-30 08:26:05 25 4
gpt4 key购买 nike

因此,我最近从 C++ 转向 Java(由于我的教育)并进行了一些练习。我相信这个问题不是很聪明,但我真的需要知道我做错了什么。

简单地说,我有 3 个类:

  • 主类
  • Composer
  • 音乐会

我的问题在 main() 中:

public static void main(String[] args) {
Composer Schubert = new Composer("Franz Schubert", "Classical Music", 6);
Schubert.getConcert()[1].enterWholeConcertData(); //program just crashes here
}

之后什么都没有,它只是抛出这个异常:

Exception in thread "main" java.lang.NullPointerException at incredible_package.mainClass.main(mainClass.java:16)

注意:如果我直接从 Concert 类对象调用 enterWholeConcertData() 并且它不是它们的数组(像这样),一切正常:

Concert concert = new Concert();
concert.enterWholeConcertData();

Composer 有一个字段,它是一个 Concert 类数组 和一个 int 变量,它定义了 Concert 类中元素的数量(加上默认构造函数,另一个setters/getters,“显示字段”方法,“输入全部信息”方法):

public class Composer{
Composer(String name, String genre, int aNOC)
{
this.name = name;
this.genre = genre;
this.numberOfConcerts = aNOC;

this.concert = new Concert[numberOfConcerts];
}

private int amountOfSpectators;
private Concert[] concert;
}

Getter 用于 Composer 类中的音乐会:

public Concert[] getConcert()
{
Concert[] copy = new Concert[this.concert.length];
System.arraycopy(this.concert, 0, copy, 0, copy.length);
return copy;
}

Concert 由(加上 setter/getter、“显示信息”方法、参数构造函数)组成:

public class Concert{
Concert()
{
date = "--.--.----";
amountOfSpectators = 0;
}

private String date;
private int amountOfSpectators;

public void enterWholeConcertData()
{
System.out.println("Enter the date:");

Scanner sDate = new Scanner(System.in);
date = sDate.nextLine();
sDate.close();

System.out.println("Enter the number of spectators: "
+ "");

Scanner sAOW = new Scanner(System.in);
amountOfSpectators = sAOW.nextInt();
sAOW.close();
}
}

对不起,如果我没有提到任何重要的事情。你可以问我这方面的问题,我很乐意添加一些新信息。

最佳答案

据我所见:

public static void main(String[] args) {
Composer Schubert = new Composer("Franz Schubert", "Classical Music", 6);
Schubert.get_concert()[1].enterWholeConcertData(); //program just crashes here
}

您创建一个新的 Compser,设置它的名称、流派和 NoC。您还初始化了包含 6 个元素的数组。

但是,数组中的元素还是Null,因为你还没有初始化它们。你至少应该做这样的事情:

Shuber.get_concert()[1] = new Concert();

在调用方法之前,对于任何其他项目也是如此。

关于java - 在 Java 中填充对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21795723/

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