Eclipse Namenspyramide

ChillR

Mitglied
Hey Leute.
Ich grübel jetzt schon mehrere Stunden vor einer Aufgabe und komm nicht weiter. Ich soll meinen Namen als Pyramide ausgeben und zwar in der Form : horizontal und zentriert ( Basis oben ).
Das ganze soll so aussehen :
Java:
N A M E N
 N A M E
  N A M 
   N A
    N
Hab jetzt folgenden Code geschrieben:
Java:
public class Pyramide {

	public static void main(String[] args) {

		char[] name = new char[5];
		int i, j; // i Zeilen, j Spalten!
		int n = 4; // n ist die Anzahl an Zeilen
		char[] a = { 'N', 'A', 'M', 'E', 'N' };
		// Anfang
		for (i = 0; i <= n; i++) {
			for (j = 0; j <= n ; j = j + 1)
				System.out.print(a[j]+ " ");
		
			

			System.out.println();

		}
	}

}

Das Ergebnis ist dieses :
Java:
N A M E N 
N A M E N 
N A M E N 
N A M E N 
N A M E N
Ich komm nicht drauf wie ich in Zeilen 2-5 die Leerzeichen hinbekomme und die einzelnen Buchstaben die zuviel sind wegkriege. Wäre echt nett wenn mir jemand helfen könnte.
 
Zuletzt bearbeitet von einem Moderator:
F

Firephoenix

Gast
Und für die Organisation der Schleifen hilft dir evtl das hier:

Sei z die Zeile, die Zählung beginnt bei 0. n eine beliebige Anzahl buchstaben.

Dann gilt für jede Zeile z:

erst kommen z leerzeichen und dann n-z buchstaben.

Hast du also die Buchstaben "H A L L O", dann sehen die ersten 3 Zeilen (0-2) so aus:
(n = 5)

Zeile 0: H A L L O (keine leerstellen)
Zeile 1: _ H A L L (1 leerzeichen und 5-1=4 Buchstaben)
Zeile 2: _ _ H A L (2 leerzeichen und 5-2=3 Buchstaben)
usw.
 

ChillR

Mitglied
OK das hab ich schonmal verstanden. Aber wenn ich das ganze so schreibe :
Java:
public class Pyramide {

	public static void main(String[] args) {

		char[] name = new char[5];
		int i, j; // i Zeilen, j Spalten!
		int n = 4; // n ist die Anzahl an Zeilen
		char[] a = { 'N', 'A', 'M', 'E', 'N' };
		// Anfang
		for (i = 0; i <= n; i++) {
			for (j = 0; j <= n-i ; j = j + 1)
				System.out.print(a[j]+ " ");
			
			

			

			System.out.println();

		}
	}

}
dann kommt als Ergebniss :
Java:
N A M E N 
N A M E 
N A M 
N A 
N
raus

Wie krieg ich den die Leerzeichen vor den Buchstaben hin ? Also :

Zeile 0: H A L L O (keine leerstellen)
Zeile 1: _ H A L L _
Zeile 2: _ _ H A L _ _
Zeile 3: _ _ H _ _ _
usw.

Theoretisch müsste ich ja eine weitere Schleife einrichten, die nach jedem Durchgang nochmal Leerzeichen vor den Buchstaben macht. Aber wie ich das praktisch umsetze ist mir ein Rätsel
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
Du kannst einen zusätzlichen Counter einbauen den du erhöhst.

Java:
int leerzeichen = 0;
for(int x = 0; x < ??; x++){
//Leerzeichen schreiben, z.B. in ner extra-Methode ohne Newline am Ende
writeLeerzeichen(leerzeichen);
/* Restlichen Sachen */
leerzeichen++;
 

tribalup

Bekanntes Mitglied
Also viel mehr als das hier fällt mir auf die schnelle auch nicht ein.

Java:
public class PyramideRechtsbündig {

	public static void main(String[] args) {

		String meinstring = "NAMEN";

		for (int i = 0; i <= meinstring.length(); i++) {
			for (int x = 0; x < i; x++) {
				System.out.print(" ");
			}
			System.out.println(meinstring.subSequence(0, meinstring.length()
					- i));
		}
	}

}

Ansonsten müsste man noch Leerzeichen einbauen zwischendurch. Das artet aber dann schnell aus.
 

ChillR

Mitglied
Kann man nicht ne zweite Schleife einbauen die immer nen Leerzeichen vor das ganze setzt ? Also
Zeile 1 : N A M E N
Zeile 2 : _ N A M E
Zeile 3 : _ _ N A M
Zeile 4 : _ _ _ N A
Zeile 5 : _ _ _ _ N

? Das ganze muss am Ende auch aussehen wie eine Pyramide also :
Java:
N A M E N
 N A M E
  N A M
   N A
    N
 

timbeau

Gesperrter Benutzer
Erstmal versuchen die gegebenen Tipps umzustzen bevor man das nochmal vorschlägt. Es gibt mehrere Möglichkeiten.
 

ChillR

Mitglied
Dein Ergebniss wäre dieses :
Java:
NAMEN
 NAME
  NAM
   NA
    N

Ich bräuchte aber:
Java:
N A M E N
 N A M E
  N A M 
   N A
    N

Ich bin ja am rumprobieren nur ich weiss nicht wie ich die "zweite" Schleife schreiben soll, dass die mir die Leerzeichen macht.
 
S

SlaterB

Gast
die hattest du doch schon selber um 12:41 :
Java:
 for (j = 0; j <= n-i ; j = j + 1)
                System.out.print(a[j]+ " ");
zusammen mit Array,
alles kombinieren
 

tribalup

Bekanntes Mitglied
Java:
public class Pyramide {
 
    public static void main(String[] args) {
 
        char[] name = new char[5];
        int i, j; // i Zeilen, j Spalten!
        int n = 4; // n ist die Anzahl an Zeilen
        char[] a = { 'N', 'A', 'M', 'E', 'N' };
        // Anfang
        for (i = 0; i <= n; i++) {
        	for(int k=0;k<=i;k++)                      
        		System.out.print(" ");                  
            for (j = 0; j <= n-i ; j = j + 1)
                System.out.print(a[j]+ " ");
            
            
 
            
 
            System.out.println();
 
        }
    }
 
}
 

Skip

Mitglied
Hallo!
Ich habe ein ähnliches Problem,ich bin zwar jetzt auf linksbündig,horizontal gekommen,brauche aber linksbündig vertikal,könnte mir da vl. einer helfen? :)
Ich hab eine etwas andere Schreibweise aber das ist ja egal.
 

timbeau

Gesperrter Benutzer
Was bedeutet bitte für dich "linksbündig vertikal"?

Und schau dir mal den 1. Post von Chiller an und dann deinen.Siehst du den Unterschied, was gegebene Informationen, Fragestellung etc angeht?
 

Skip

Mitglied
War etwas undeutlich ausgedrückt,sorry!
Es soll später die Form:

N
A A
M M M
E E E E

haben
So sieht es bei mir Linksbündig Horizontal aus:

public void Aufgabe1(char name[]) {

int zaehler = 0;
while (zaehler < name.length) {
zaehler++;
System.out.println();

for (int x = 0; x < zaehler; x++) {

System.out.print(name[x] + " ");
}
}

}
 
S

SlaterB

Gast
in diesem Thema sind ja nun gerade schon paar Dinge besprochen, nicht unbedingt mit dir,
aber du kannst dir ja Zeit nehmen auch alles nachzuvollziehen,

bleibt es dennoch bei der Frage 'wie gehts' oder schon irgendwelche eigenen Denkprozesse?
die Ausgabe muss weiter Zeile für Zeile erfolgen, daran gibt es nichts zu rütteln,

eine Schleife wird sicher Zeile i = 1, 2, 3, usw. hochzählen,

in der 1. Zeile soll dann der 1. Buchstabe 1x ausgegeben werden
in der 2. Zeile soll dann der 2. Buchstabe 2x ausgegeben werden
in der 3. Zeile soll dann der 3. Buchstabe 3x ausgegeben werden

das bringt keine Ideen zu Umsetzungen?

es muss auch nicht alles auf einmal klappen, eine Schleife die alle 5 Buchstaben 1x untereinander schreibt
wäre schon ein guter neuer Anfang
 
Zuletzt bearbeitet von einem Moderator:

Skip

Mitglied
ich weiß einfach nicht weiter,hab einige sachen ausprobiert aber bin zu keiner vernünftigen Lösung gekommen, ich hab es zwar geschafft sie untereinander zu schreiben,komme aber nicht weiter:

Java:
 public class pyramide {
	public static void main(String[] args) {

		char name[] = { 'n', 'a', 'm', 'e' };

		int i;
		int n = 3;

		for (i = 0; i <= n; i=i+1) {

			
			System.out.print(name[i] + " ");

				System.out.println();

	 }

	}
}
 
S

SlaterB

Gast
Zeile 12 schreibt den Buchstaben einmal, jetzt musst du ihn nur noch mehrfach schreiben,
mit einer inneren Schleife, für den Anfang fest 4x, schaffst du das? ist das wirklich unendlich schwer?

ja, ich bin gerade im Modus gemeiner Fragen ;)
 

timbeau

Gesperrter Benutzer
Code:
N###
AA##
MMM#
EEEE

Schleife schreibt im ersten Durchlauf auch den 1. Buchstaben 1x
Im 2. Durchlauf den 2. 2x
im 3...
usw

Ganz simpel
 

Skip

Mitglied
Vom Prinzip verstehe ich es ja.Aber ich weiß nicht wie die schleife aussehen soll...hatte es zu erst mit einer while-schleife probiert aber es hat nicht funktionier bzw. wenn dann hat er mir buchstaben untereinander ausgeworfen.Mit der for schleife spuckt der auch nicht das richtige aus...Ich nutze aber i=i+1?
 

timbeau

Gesperrter Benutzer
Versuch doch mal meinen Vorschlag von gerade umzusetzen. Fang mit i= 0 an. Gib den Buchstaben des arrays an Stelle i aus und zwar (i+1) Mal. Dann eine Newline. Solange bis i <= 3 (bzw die Länge des Arrays). Und i=i+1 ist schon richtig. Oder einfach i++
 
S

SlaterB

Gast
eine innere Schleife hast du noch nicht gepostet, wie gesagt z.B. eine die den Buchstaben der aktuellen Zeile 4x ausgibt statt bisher 1x,
das ist nun wirklich nicht viel Arbeit,
wenn der Code gepostet ist kann man weitersehen falls wirklich nicht alleine
 

Max9112

Neues Mitglied
Hallo,

ich versuche schon die ganze Zeit meinen Fehler zu finden.
Muss die Pyramide linksbündig und vertikal programmieren.

Java:
public class Pyramide {

	public static void main(String[] args) {

		char[] name = new char[9];
		int i, j; // i Zeilen, j Spalten!
		int n = 5; // n ist die Anzahl an Zeilen
		char[] a = { 'N', 'A', 'M', 'E', 'N' };
		// Anfang
		for (i = 5; i <= n; i--) {
			for (int k = 0; k <= i; k++)
				System.out.print("");
			for (j = 0; j <= n-i; j = j + 1)
				System.out.print(a[j] + " ");

			System.out.println();

		}
	}

}

Es wird immer ein Fehler angezeigt. Vielleicht kann mir dabei jemand helfen?
 
S

SlaterB

Gast
nimm
> for (i = 5; i > 0; i--) {
als äußere Schleife

überlege dir einfach was Sinn ergibt, wieviele Schleifendurchläufe/ wie viele Zeilen brauchst du?
> k <= i
war in jedem Fall falsch, wenn k kleiner wird läuft das lange..,
nicht unbedingt ewig, durch Überlauf k vielleicht bald positiv..
 

Oben