Проблема при выводе массива, заполненного рандомными числами - Java
Всем привет, написал программу которая должна заполнять массив рандомными числами и выводить его
на экран, как итог в консоле вообще ничего не появляется, буду рад за помощь
Вот код:
public class Main {
public static void main(String[] args) {
TablicaLiczb tablicaLiczb = new TablicaLiczb(5);
tablicaLiczb.do_tablicy();
tablicaLiczb.wypisz();
}
}
public class TablicaLiczb {
private int liczbaElementow;
private int[] tablica = new int[liczbaElementow];
private int max = 0;
private int min = 0;
public TablicaLiczb(int liczbaElementow) {
this.liczbaElementow = liczbaElementow;
}
public int random(int max, int min) {
this.max = max;
this.min = min;
max -= min;
return (int) (Math.random() * ++max) + min;
}
public void do_tablicy() {
for (int i = 0; i < tablica.length; i++)
tablica[i] = random(1, 1000);
}
public void wypisz() {
for (int i = 0; i < tablica.length; i++)
System.out.print("\t" + tablica[i]);
}
}
Ответы (1 шт):
Проблема в том, как работает инициализация полей в java.
private int liczbaElementow;
private int[] tablica = new int[liczbaElementow];
Это кусок кода выше, будет выполнен до того, как вызовется конструктор. Причем liczbaElementow будет проинициализированна значение по-умолчанию для данного типа, т.е. для int это 0. А значит tablica - будет пустым массивом.
То что потом в конструкторе передается новое значение и liczbaElementow заново иницилизируется уже никак не повлияет на tablica. Ну и далее в do_tablicy цикл будет исполнен 0 раз.
Исправить нужно путем переноса иницилизации в конструктор:
private int liczbaElementow;
private int[] tablica;
private int max = 0;
private int min = 0;
public TablicaLiczb(int liczbaElementow) {
this.liczbaElementow = liczbaElementow;
this.tablica = new int[liczbaElementow];
}