为什么我不能在函数内创建我的数组对象?
why I can't create my array object inside function?
我在我的 class 中声明了一个字符串数组,但没有初始化它,然后我创建了一个函数来填充这个名为 "FillFacts" 的数组。问题是当我调用应该 return 我的数组的函数时它 return 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
的实例时它不会执行(这就是 FillFacts
和 FillColors
未执行的原因)。构造函数没有 return 类型。
改变
public void Facts()
至
public Facts()
您应该更改 constructor
void:
public void Facts() {
喜欢这个:
public Facts() {
我在我的 class 中声明了一个字符串数组,但没有初始化它,然后我创建了一个函数来填充这个名为 "FillFacts" 的数组。问题是当我调用应该 return 我的数组的函数时它 return 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
的实例时它不会执行(这就是 FillFacts
和 FillColors
未执行的原因)。构造函数没有 return 类型。
改变
public void Facts()
至
public Facts()
您应该更改 constructor
void:
public void Facts() {
喜欢这个:
public Facts() {