2016-10-15 5 views
0

Я пытаюсь сделать программу, где он извлекает набор массивов из другого классаJava извлечения массива и напечатать его в течение каждого цикла

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

Я не уверен, почему он печатает «null» 7 раз подряд в консоли. Не должно быть:

1 
2 
3 
4 
5 
6 
7 
+1

Нет, вы ничего не делаете для перемещения данных с 'barHeights' в' barArray'. Все, что вы делаете, это посмотреть на длину 'barHeights', а не на данные. Кроме того, что такое «Бар», и почему вы считаете, что «Бар» - это целое число? – ajb

+0

Как бы я потянул данные? Bar - это имя, которое я дал, потому что у меня есть другие классы, которые являются блоками и т. Д. – Jero

+0

Вы также используете barHeights, когда переменная является barheights – CamFeltscheer

ответ

0

В строке:

Bar[] barArray = new Bar[barHeights.length]; 

Вы создаете экземпляр массива ссылок Bar класса вместо междунар.
Этот массив автоматически инициализируются нулевыми значениями, а в строке:

for (Bar bar : barArray){ 
    System.out.println(bar); 

Вы interating эти нулевые значения.
Если вы хотите retrive массив, который вы передаёте в качестве аргумента метода, следует использовать:

public void init(int[] barHeights) { 
    for (int i : barHeights) { 
     System.out.println(i); 
    } 
} 
0

вы создали Arry Bar, но не инициализируется, поэтому он инициализируется нулем.

Bar[] barArray = new Bar[barHeights.length]; 

когда петля через barArray

for (Bar bar : barArray){ 
    System.out.println(bar); 

будет отображаться пустой.

+0

Как мне ее инициализировать? – Jero

+0

@Heroge Так как вы ничего нам не сказали о классе «Бар», как мы можем ответить на этот вопрос? – ajb

+0

@Heroge мы не расскажем вам об инициализации класса Bar, потому что вы не даете нам достаточной информации. –

0

Код должен быть таким.

class Bar { 
    private int height; 

    public int getHeight() { 
     return height; 
    } 

    public void setHeight(int height) { 
     this.height = height; 
    } 
} 

алгоритм должен быть, как этот

1.Create другой тип массива Бар имени barArray.

2.loop высота массив с именем barHeights

3.within цикл создание нового объекта Bar для каждого раунда

высоты 4.Set для каждого объекта

5.add бар объект в массив

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