Java检索数组并在每个循环中打印它

时间:2016-10-15 04:01:05

标签: java arrays foreach

我正在尝试创建一个程序,它从不同的类中检索一组数组

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

3 个答案:

答案 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);
    }
}