java drzewko

CH
  • Rejestracja:około 7 lat
  • Ostatnio:około 3 lata
  • Postów:19
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("    **");

}

}

atmal
  • Rejestracja:około 8 lat
  • Ostatnio:8 dni
  • Postów:913
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.


Failure of one test is a tragedy, failure of fifty is a statistic.
CH
  • Rejestracja:około 7 lat
  • Ostatnio:około 3 lata
  • Postów:19
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.

atmal
  • Rejestracja:około 8 lat
  • Ostatnio:8 dni
  • Postów:913
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ę.


Failure of one test is a tragedy, failure of fifty is a statistic.
CH
  • Rejestracja:około 7 lat
  • Ostatnio:około 3 lata
  • Postów:19
0

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

atmal
  • Rejestracja:około 8 lat
  • Ostatnio:8 dni
  • Postów:913
1

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

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

Failure of one test is a tragedy, failure of fifty is a statistic.
CH
  • Rejestracja:około 7 lat
  • Ostatnio:około 3 lata
  • Postów:19
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(" ");
        }
    }
}

}

aolo23
warunek if, else możesz skrócić do zapisu (i >= middle - 1) ? System.out.print("*") : System.out.print(" "); warunek ? if true : else
Sławomir Poss
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:1
0

:), wszystko działa. Dzieki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.