我正在尝试创建一个程序,它从不同的类中检索一组数组
int barHeights[] = new int[]
{ 1, 2, 3, 4, 5, 6, 7 };
然后在方法中调用它并将其打印出来
public void init(int[] barHeights)
{
Bar[] barArray = new Bar[barHeights.length];
for (Bar bar : barArray){
System.out.println(bar);
}
我不确定为什么它在控制台中连续7次打印'null'。不应该是:
1
2
3
4
5
6
7
答案 0 :(得分:0)
排队:
Bar[] barArray = new Bar[barHeights.length];
您正在创建Bar类引用数组的实例而不是int。
该数组使用空值自动初始化,并在行中
for (Bar bar : barArray){
System.out.println(bar);
您正在处理那些空值 如果要检索作为方法参数传递的数组,则应使用:
public void init(int[] barHeights) {
for (int i : barHeights) {
System.out.println(i);
}
}
答案 1 :(得分:0)
您已创建arry Bar但未初始化它,因此它已初始化为null。
Bar[] barArray = new Bar[barHeights.length];
循环通过barArray
for (Bar bar : barArray){
System.out.println(bar);
它将显示null。
答案 2 :(得分:0)
代码应该是这样的。
class Bar {
private int height;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
}
算法应该是这样的
1.创建另一个名为barArray的数组类型的Bar。
2.loop高度数组名为barHeights
3.within循环为每一轮创建Bar的新对象
4.设置每个对象的高度
5.add bar对象到数组
public void init(int[] barHeights)
{
Bar[] barArray = new Bar[barHeights.length];
int index=0;
for (int height : barHeights){
Bar bar=new Bar();
bar.setHeight(height);
barArray[index]=bar;
index++;
System.out.println(bar);
}
}