Ten zapis
do {
a = scan.nextInt() ;
if (a!=0) {
tablica = new int [z];
tablica [k] = a;
k++;
z++;
}
}
while (a!=0);
powoduje, że przy każdej iteracji pętli do...while do zmiennej tablica jest przypisywana nowa tablica o wielkość z i w tej tablicy na k-tej pozycji (indeks) jest zapisywana wartość z a
"na siłę" można posłużyć się np. System.arraycopy
[ on-line ]
do {
a = scan.nextInt() ;
if (a!=0) {
// Tworzymy nową tablicę o rozmiarze większym o jeden
int[] nowaTablica = new int[tablica.length + 1];
// Kopiujemy zawartość starej tablicy do nowej tablicy
System.arraycopy(tablica, 0, nowaTablica, 0, tablica.length);
// Podmieniamy referencję do starej tablicy na referencję do nowej tablicy
tablica = nowaTablica;
tablica[k] = a;
k++;
z++;
}
}
ale odradzam taki zapis (podałem w ramach ciekawostki), polecam też, tak jak już napisał @tangarr; użycie ArrayList lub LinkedList
[ on-line ]
System.out.println("Podaj liczbę, 0 = koniec:");
do {
liczba = scan.nextInt();
if (liczba != 0) lista.add(liczba);
} while (liczba != 0);