Ausgabe von einem Buchstaben

BTW für alle die nicht verstanden haben warum der Buffer mit den zwei Schleifen nicht funktioniert hat.

Ihr habt den Buffer VOR den Schleifen angelegt.
Dann in den Schleifen Buchstaben angehängt.
Und am ende eines Durchgangs ausgegeben.
Im nächsten Durchlauf der äußeren Schleife, habt ihr den Buffer nicht geleert und daher dann an den schon gefüllten Buffer noch mehr Buchstaben angehängt.

Daher kam es dass in jeder Zeile zusätzlich zu den Buchstaben die da stehen sollten noch die standen die in der Vorgängerzeile standen.
 
Hallo Andibert,

jau, da hast Du natürlich recht ...... ;-]

Lag bei mir wohl daran, dass es eher eine "Trockenübung" war - hatte mich hierbei mehr auf den syntaktischen Aufbau der Schleifen konzentriert und es nur schnell ohne StringBuffer sondern mit direkter Ausgabe der BUs getestet, da ich den Buffer in diesem Fall nicht für zwingend hielt!! :)

Trotzdem Danke für den Hinweis!!
Gruß
Klaus
 
Zuletzt bearbeitet:
Hm.... wohl schon gelöst :)
Und 13 Tage zu spät...... ich sollte schlafen gehen oO

Meine Lösung wäre:

Java:
public static void main(String[] args) {
   outputChars('A', 5);
}

private static void outputChars(char c, int lines) {
   for(int i = 0; i < lines; i++) {
      int j = -1;

      while(j++ < (i * 2)) {
         System.out.print(c);
      }

      System.out.println();
   }
}

Viele Grüße,
MAN
 
Zuletzt bearbeitet:
... was ist hier faul ?

Code:
public class TurmBuchstaben 
{
	public static void main(String[] args) 
	{
		System.out.println();
		buchstabenAusgabe();
		System.out.println();
	}
	
	public static void buchstabenAusgabe()
	{
		int j = 0;
		char buchstabe = 'Z';
		int zeilenAnz = 9;
		StringBuffer sb = new StringBuffer();
		
		for (int i = 0; i < zeilenAnz; i++)
		{
			for (int k = 0; k <= j; k++)
			{ sb.append(buchstabe); }
             
			System.out.println(sb.toString());
		}
		
		for (int i = 0; i < (zeilenAnz + 6); i++)
		{			
			sb.deleteCharAt(zeilenAnz - 1);
                                                System.out.println(sb.toString());
			zeilenAnz--;
		}		
	}
}


... vor allem --> for (int i = 0; i < (zeilenAnz + 6); i++)
? (zeilenAnz + 6) ?
 
Ich weiß zwar nicht genau, woher du den Code hast, oder wie er Zustande kommt (und warum da +6 steht), aber die theoretische Lösung deines Problems könnte wie folgt aussehen:

Java:
public static void main(String[] args) {
	System.out.println();
	buchstabenAusgabe();
	System.out.println();
}

public static void buchstabenAusgabe() {
	char buchstabe = 'Z';
	int zeilenAnz = 9;
	StringBuffer sb = new StringBuffer();

	for(int i = 0; i < zeilenAnz; i++) {
		sb.append(buchstabe);
		System.out.println(sb.toString());
	}

	while(zeilenAnz-- > 0) {
		sb.deleteCharAt(0);
		System.out.println(sb.toString());
	}
}
 
Zurück