Zeilenanzahl bestimmen?

Status
Nicht offen für weitere Antworten.

lotte32

Mitglied
Hallo. mal eine doofe Frage, aber ich komm grad absolut nicht weiter.

Also ich hab hier eine Schleife die mir eine Art Tannenbaum in * ausgibt.
Nun meine Frage, wie kann ich es machen das ich die anzahl der kompletten Zeilen bestimmen kann, also von allen 3 Teilen?
Ich möchte in der Testklasse den Wert der Zeilen bestimmen können, allerdings komm ich nicht drauf wie ich das schaffen könnte.

Hier mal etwas code:

Java:
 	public void tannenbaum(int zeilen) {
		/* teil1*/
		for (int i = 0; i < zeilen - 7; i++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
                /* teil2 */
		for (int i = 0; i < (zeilen - 5); i++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
                /* teil 3 */
		for (int i = 0; i < (zeilen - 3); i++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}

	}


In der Testklasse sieht das bei mir so aus:

Java:
blaBla.tannenbaum(20);

jetzt soll der Baum 20 Zeilen hoch sein.
Bekomm es leider nicht hin =(

Kann mir da jemand evtl weiterhelfen.
 
Einfach eine Zählvariable mitführen, welche bei jedem Schleifendurchlauf inkrementiert wird

Java:
public class BaumTest {

	public void tannenbaum(int zeilen) {
		int gesamtzeilen = 0;

		/* teil1 */
		for (int i = 0; i < zeilen - 7; i++, gesamtzeilen++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
		/* teil2 */
		for (int i = 0; i < (zeilen - 5); i++, gesamtzeilen++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
		/* teil 3 */
		for (int i = 0; i < (zeilen - 3); i++, gesamtzeilen++) {
			for (int j = i; j < 20; j++) {
				System.out.print(" ");
			}
			for (int j = i; j > -1; j--) {
				System.out.print("*");
			}
			for (int j = i; j > 0; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		System.out.println("\nGesamte Zeilenanzahl : " + gesamtzeilen);
	}

	public static void main(String agrs[]) {
		new BaumTest().tannenbaum(20);
	}
}
 
Hallo, also ich bekomm es immer noch nicht hin, wenn ich nun eine Wert zB 25 nehme, werden mir immernoch 60 zeilen ausgegeben. Was mach ich falsch?
 
Schau mal genau hin wie oft deine Schleifen durchlaufen werden.
Oder, wenn du die Variante von Meru nimmst, dann musst du die Überprüfung mit den Gesamtzeilen noch in die Schleifen einbauen.
 
Erstmal danke für die tipps, hab die Variante von Murray genommen. Die 60 zeilensetzen sich wohl durch 25 * 3 - 15 zusammen.
25 = zeilen 3 = die 3 ebenen 15 = 7+5+3

wenn ich nähmlich 20 zeilen haben will kommen 45.
20 * 3 - 15 = 45

versuch das grade irgentwie umzusetzen, bin aber noch auf dem falschem weg.
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Zurück
Oben