【问题标题】:why I can't create my array object inside function?为什么我不能在函数内创建我的数组对象?
【发布时间】:2016-03-11 00:20:36
【问题描述】:

我在我的类中声明了一个字符串数组,但没有对其进行初始化,然后我创建了一个填充这个数组的函数,称为“FillFacts”。问题是当我调用应该返回我的数组的函数时,它返回 NullPointerException。 问题是我如何在函数中初始化我的数组,因为我已经测试过在声明部分初始化它,如下所示:

private String[] facts = {"fact1", "fact2", "fact3"};

它可以工作,但我不想这样使用它。

代码来源:

import java.util.Random;
public class Facts {

private String[] facts;
private String[] colors;

private String fact, color;
private Random random = new Random();
private int random_number;

public void Facts() {

    this.random = new Random();
    this.random_number = 0;

    FillFacts();
    FillColors();
}

public void FillFacts() {

    facts = new String[] {"smartphone android has a home button", "every Iphone has a memory in his heart!", "cubes can be rotated in 180 degree", "banana has a yellow color", "wacom tablet are linked with usb cable"};
}

public void FillColors() {

    colors = new String[] {"#34495e", "#3498db", "#1abc9c", "#e74c3c", "#f1c40f", "#95a5a6", "#d35400"};
}

public String PickRandomFact() {

    random_number = random.nextInt(facts.length) ;
    fact = facts[random_number];
    return fact;
}

public String PickRandomColor() {

    random_number = random.nextInt(colors.length);
    color = colors[random_number];
    return color;
}

public String getColor() {
    return color;
}
}

【问题讨论】:

    标签: java arrays object instance-variables


    【解决方案1】:

    void Facts() 不是构造函数,所以当你创建Facts 的实例时它不会被执行(这就是为什么FillFactsFillColors 不会被执行)。构造函数没有返回类型。

    改变

    public void Facts()
    

    public Facts()
    

    【讨论】:

    • 你能告诉我你是如何快速调试我的代码的吗?你知道一些调试技巧吗?请告诉我,因为我昨天做了噩梦,你解决了它。
    • @user21959 我查看了您的代码,并且您的数组初始化看起来是正确的,所以我又看了一下,并试图思考什么会阻止您的 FillFacts 和 FillColors 方法被执行。那是我注意到无效的构造函数声明的时候。当然,如果您在调试器中运行代码并在 Facts 方法中放置一个断点,您会很容易找到它,这会告诉您它从未执行过。
    • 再次感谢您的精彩解释和回复。
    【解决方案2】:

    您应该更改constructor void:

     public void Facts() {
    

    喜欢这个:

     public Facts() {
    

    【讨论】:

    • FillFacts 初始化一个实例成员,所以它不需要返回类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2021-03-15
    • 2010-12-01
    相关资源
    最近更新 更多