java drzewko

0

Cześć, dopiero zaczynam kodować w javie.
Chce stworzyć drzewko.
Nie potrafię niestety dodać pnia by był idealnie po środku i jakąś zgrabniejsza metodą.
Proszę o pomoc

To mój kod:

public class ChristmasTree {

public static void main(String[] args) {

    int heigh = 5;

    for (int i = 0; i < heigh; i++) {
        for (int a = 0; a < heigh - i; a++) {
            System.out.print(" ");
        }
        for (int a = 0; a <= i * 2; a++) {
            System.out.print("*");
        }
        System.out.println();
    }


    System.out.println("    **");

}

}

1

Takie naiwne rozwiązanie nie ma sensu, zmienisz wysokość choinki i pień nie będzie już po środku.

Po pierwsze - zauważ że środek choinki jest równy jej height.
Ciężko wyrównać dwie gwiazdki więc zalecałbym użycie trzech. W pętli od i = 0 pierwsza gwiazdka musi pojawić się gdy i == middle - 1 (gdzie middle = height), więc warunek można uprościć do i >= middle - 1. Pętla powinna się wykonywać tak długo jak i <= middle + 1.

0

Hej dzięki za odpowiedz,
Wiem ze slabo to wyglada z tym pniem.:)
Niestety nie do konca rozumiem jak to zrobic z Twojego opisu.
Będę probowalto tak jakos zapisac.

1

Zrób dodatkową pętlę od i = 0, i <= middle + 1 gdzie middle = height.
Jeżeli i >= middle - 1 wyświetlasz gwiazdkę, jeżeli nie to wyświetlasz spację.

0

No i musze ją jakoś jeszcze zakończyc( bo inaczej bedzie stale robic spacje?)

1

Pętla zakończy się gdy warunek przestanie być prawdą:

for (int i = 0; i <= middle + 1; i++)
{
	// Tu wyświetlanie spacji albo gwiazdek
}
0

Bardzo dziękuję za pomoc, wszystko działa.
Wstawiam kod na przyszłość jak będzie ktoś potrzebować.

public class ChristmasTree {

public static void main(String[] args) {

    int heigh = 5;
    int middle = heigh;

    for (int i = 0; i < heigh; i++) {
        for (int a = 0; a < heigh - i; a++) {
            System.out.print(" ");
        }
        for (int a = 0; a <= i * 2; a++) {
            System.out.print("*");
        }


        System.out.println();
    }

    for (int i = 0; i <= middle + 1; i++) {
        if (i >= middle - 1) {
            System.out.print("*");
        } else {
            System.out.print(" ");
        }
    }
}

}

0

:), wszystko działa. Dzieki

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