java - 为什么我无法在函数内创建数组对象?

标签 java arrays object instance-variables

我在类中声明了一个 String 数组,但没有对其进行初始化,然后创建一个名为“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;
}
}

最佳答案

void Facts() 不是构造函数,因此当您创建 Facts 实例时不会执行它(这就是不执行 FillFactsFillColors 的原因)。构造函数没有返回类型。

改变

public void Facts()

public Facts()

关于java - 为什么我无法在函数内创建数组对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115927/

相关文章:

c++ - 错误 : expression must have a class type

java - 启动应用程序之前远程数据库的 Spring 端口转发

javascript - 如何比较多个数组中的相同值?

c++ - 数组类错误 : too many initializers 的多维数组

javascript - 有没有办法访问原型(prototype)函数内对象的所有值?

c# - 无法访问我的对象的成员

java - REST Java 客户端无法调用请求

java - Java 方法参数可以是声明大小的集合吗?

Java servlet上传文件并获取post参数

c++ - 你能改变二维数组在 C++/CUDA 中的排序方式吗