Witam wszystkich,
Rozpoczynam naukę programowania Java i mam pewien problem z działaniem programu.
public class TablePar {
int ch, in, out;
int Tab[];
// Utworzenie kontruktora
TablePar(int T){
Tab = new int[T];
in = out = 0;
}
// Meroda przypisująca tablicy wartości parzyste
void putTab(int ch){
if (in == Tab.length) return;
if (ch%2 != 0 | ch == 0) return;
if (ch%2 == 0){
Tab[in] = ch;
in++;
}
}
// Metoda wypisująca elementy tablicy
int getTab(){
if (out == Tab.length) return (int) 0;
return Tab[out++];
}
}
public class Table {
public static void main(String args[]) {
// Utworzenie obiektów klasy TablePar określających wielkość tablicy
TablePar Table1 = new TablePar(10);
TablePar Table2 = new TablePar(20);
// Przypisanie wartości parzystych do tablicy 2
for (int i = 0; i < 100; i++){
Table2.putTab(i);
}
// Wyświetlenie tablicy
for (int j = 0; j < 25; j++){
if (Table2.getTab() == (int) 0) break;
System.out.print(Table2.getTab()+"\t");
}
}
}
Program ma za zadanie wypełnić tablice 20 elementową liczbami parzystymi, a następnie wyświetlić ją na ekranie. Dodałem również zabezpieczenie przed przepełnieniem tablicy- i tu pojawia się problem.
W klasie TablePar wszystko działa poprawnie. Problem zaczyna się w klasie Table.
Po skompilowaniu programu wyświetlają się liczby podzielne przez 4, a więc co drugi wyraz tablicy. Jednak po usunięciu instrukcji:
if (Table2.getTab() == (int) 0) break;
Program działa poprawnie, jednak zabezpieczenie nie działa tak jakbym chciał.
Bardzo proszę o wyjaśnienie dlaczego się tak dzieje.
Dzięki.