Choinka z gwiazdek

0

Cześć wszystkim, jestem nowym użytkownikiem tego forum. Mam problem ze zrozumieniem kodu, a oto on:

char znakGwiazdki = '*';
        Scanner sc = new Scanner(System.in);
        System.out.println("Podaj liczbę poziomów choikni: ");
        int poziomy = sc.nextInt();                                     // dotąd wiem

        for (int i = 0; i < poziomy; i++) {                           // rozpoczęcie pętli od 0 i powtórzenie tyle razy ile wpisaliśmy poziomów
            for (int j = 0; j < poziomy * 2; j++) {                 // tutaj nie rozumiem czemu jest *2
                if (j < (poziomy - i) || j > (poziomy + i)) {      // ta cała instrukcja robi puste miejsca lub znak gwiazdki
                    System.out.print(" ");
                } else
                    System.out.print(znakGwiazdki);
            }
            System.out.println();
        }

Czy 'i' odpowiada za ilość wierszy a 'j' za kolumny?
Jakby ktoś pomógł mi krok po kroku wytłumaczyć, co za co odpowiada jak dla głąba to bym był turbo wdzięczny.

4

tutaj nie rozumiem czemu jest *2

A czy przypadkiem taka choinka w każdej linii nie ma o 2 gwiazdki więcej (albo mniej - zależy, z której strony się patrzy ;) )?
W sensie - w każdym kolejnym wierszu dochodzi jedna gwiazdka po lewej, a druga po prawej stronie.

0

Czy w takim przypadku nie powinno być tak?

for (int j = 0; j < poziomy + 2; j++) 
2

Debugowanie Kod z ostatniego postu zmienia pozycje gwiazdek i choinka robi się krzywa. Sprawdź poprzez debugowanie.

0

Czy w takim przypadku nie powinno być tak:

Raczej nie. Bo masz poziomy * 2 - czyli dla każdego poziomu dodajesz 2 gwiazdki. Przykładowo - dla 4 poziomów masz 1, 3, 5, 7. Jakbyś zrobił poziomy + 2 to niezależnie od ilości poziomów byś nie miał dwa razy więcej ale o 2 więcej.

0

Dobra teraz jasne. Dziękuje Panowie. @cerrato sprawdź priv ;)

2

Rysowanie choinki z gwiazdek omawiałem np. tu https://4programmers.net/Forum/C_i_C++/344381-niezrozumienie_bledu?p=1710402#id1710402
Co prawda to jest C++, ale poza const i wypisywaniem gwiazdek nie ma szczególnych różnic w stosunku do Javy. Może się przyda :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1