Pyramide aus * erstellen

Cassy96

Mitglied
Die Aufgabe lautet:

public class Pyramide {

/*
* Diese Methode soll eine Pyramide aus * zurueckgeben.
* Dabei wird mit n die breite der untersten Reihe angegeben.
* Als n wird immer eine ungerade Zahl angegeben.
* Eine Pyramide sieht wie folgt aus:
* *
* ***
* ***** (hier bekomme ich die zeilen schon beim Kopieren nicht eingerückt xD)
* Diese wird so erstellt, dass in der obersten Zeile 1 * ist, in der darunterliegenden 3 *,...
* in der (n/2+1)ten Zeile (die unterste Zeile) kommmen n *.
* Vor dem ersten * in jeder Zeile muessen noch Leerzeichen eingesetzt werden,
* damit die Sterne jeder Zeile in der Mitte stehen. Nach dem letzten Stern in
* jeder Zeile kommt ein Zeilenumbruch, dann beginnt die n�chste Zeile.
* Nach der letzten Zeile folgt KEIN Zeilenumbruch mehr.
* Das Zeichen Zeilenumbruch ist das Folgende: \n
*/


Mein Programmieransatz sah bis jetzt so aus :


Java:
public static String machePyramide(int n) {

  String a="";

  for (int i=1 ; i<n; i+=2) {

 
   for(int j=0;j<i; j++) {
    a=a+"*";
   }
 
  }


 
  return a;
   }
Jedoch kommt beim Kompilieren immer das raus und ich weiß einfach nicht, wie ich das Program gestallten soll, damit es die Zeilen einrückt.
Ich hab schon so gut wie alles versucht.. Ich bitte um HILFE :)

Ausgabe auf der Console:

*
****
*********
 
Zuletzt bearbeitet von einem Moderator:

Blender3D

Top Contributor
Ich hab schon so gut wie alles versucht.. Ich bitte um HILFE :)
Java:
public static String pyramid(int n) {
        if (n < 1) // keine Stein
            return "";
        if (n == 1) // ein Stein;
            return "*";
        int numSpace = n / 2 - 1; // Anzahl Leersteine

        String stone = ((n % 2 == 0) ? "**" : "*"); // gerade Zahl -> Doppelspitze
        String space = getFilledString(' ', numSpace);
        String tmp = space + stone;
        for (int i = 0; i < numSpace; i++) {
            tmp += "\n"; // Zeilenumbruch
            space = space.substring(0, space.length() - 1); // reduziere Leersteine
            stone += "**"; // erhoehe Steine
            tmp += space + stone; // erweitere Rueckgabestring
        }
        return tmp;
    }

    public static String getFilledString(char c, int len) {
        StringBuffer tmp = new StringBuffer("");
        for (int i = 0; i < len; i++)
            tmp.append(c);
        return tmp.toString();
    }
 

httpdigest

Top Contributor
Java:
public static String pyramid(int n) {
  String res = "";
  // Für alle Zeilen:
  for (int y = 0; y <= n / 2; y++) {
    // Leerzeichen vor jeder Zeile:
    for (int i = 0; i < n / 2 - y; i++)
      res += " ";
    // Sterne in jeder Zeile:
    for (int x = 0; x <= y * 2; x++)
      res += "*";
    // KEIN Zeilenumbruch nach der letzten Zeile!
    if (y < n / 2)
      res += "\n";
  }
  return res;
}

EDIT: Wenn Java 11 erlaubt ist, dann wie @mrBrown unten sagte, mit String.repeat(int) und zusätzlich ein bisschen Bitshifting-Obfuskierung :)
Java:
public static String pyramid(int n) {
  String res = "";
  for (int y = 0; y <= n >> 1; y++) {
    res += " ".repeat((n >> 1) - y);
    res += "*".repeat((y << 1) + 1);
    if (y < n >> 1)
      res += "\n";
  }
  return res;
}
 
Zuletzt bearbeitet:
X

Xyz1

Gast
Hier noch schnell die Stream Lösung
Java:
int n = IntStream.of(4).map(e -> 2 * e).findFirst().getAsInt();
IntStream.iterate(0, i -> i + 1).limit(n).forEach(a -> {
  IntStream.iterate(0, i -> i + 1).limit(n - a - 1).forEach(b -> System.out.print(" "));
  IntStream.iterate(0, i -> i + 1).limit(a * 2 + 1).forEach(c -> System.out.print("*"));
  System.out.println();
});
 

mihe7

Top Contributor
Dann will ich auch mal zur Verwirrung beitragen:
Java:
    public static String machePyramide(int n) {
        int w = 2*n-1;
        StringBuilder b = new StringBuilder();
        for (int i = 0; i < w*n; i++) {
            b.append(i > 0 && i % w == 0 ? '\n' : "")
             .append(Math.abs(i % w - n + 1) > i / w ? ' ' : '*');
        }
        return b.toString();
    }
 

Blender3D

Top Contributor
Ok, die Lösung ist echt heftig, das schaue ich mir dann mal in ruhe gleich an :D
Bei meiner vorherigen Lösungsvariante eine Korrektur: Bei geradem n -> Doppelte Spitze, hatte aber die Leerzeichen nicht reduziert.
Die Funktion getFilledString(), kann durch String.repeat(int) ersetzt werden. Wie @mrBrown bereits erwähnt hat.
Geht leider erst ab Java 11. Ich verwende aus Kompatibilitätsgründen aber Java 8.

Java:
public static String pyramid(int n) {
        if (n < 1) // keine Stein
            return "";
        if (n == 1) // ein Stein;
            return "*";
        int numSpace = n / 2; // Anzahl Leersteine ungerade Zahl
        String stone = "*";
        if ((n % 2 == 0)) { // gerade Zahl -> Doppelspitze
            stone += "*";
            numSpace -= 1;
        }
        String space = getFilledString(' ', numSpace);
        String tmp = space + stone;
        for (int i = 0; i < numSpace; i++) {
            tmp += "\n"; // Zeilenumbruch
            space = space.substring(0, space.length() - 1); // reduziere Leersteine
            stone += "**"; // erhoehe Steine
            tmp += space + stone; // erweitere Rueckgabestring
        }
        return tmp;
    }

    public static String getFilledString(char c, int len) {
        StringBuffer tmp = new StringBuffer("");
        for (int i = 0; i < len; i++)
            tmp.append(c);
        return tmp.toString();
    }
 

tommysenf

Top Contributor
Keine der Lösungen ist auch nur im Ansatz objektorientiert. Auch wurden nicht einmal Design Pattern verwendet. Selbst MVC wurde nicht beachtet. Also von einer zumindest akzeptablen Lösung seid ihr noch weit entfernt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MaZ Quadrat Schleife(Pyramide) Java Basics - Anfänger-Themen 9
Lion.King for-Kontrollstruktur für Pyramide Java Basics - Anfänger-Themen 8
H Pyramide Java Basics - Anfänger-Themen 49
L JavaKara Pyramide Java Basics - Anfänger-Themen 17
D Pyramide: Summe der diagonal über ihr stehenden Zahlen! Java Basics - Anfänger-Themen 6
S Sternchen Pyramide Java Basics - Anfänger-Themen 11
N Pyramide in Java Java Basics - Anfänger-Themen 3
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
Animal-Mother BMI Rechner erstellen für W/M Java Basics - Anfänger-Themen 7
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
Ray19941 Über BlueJ Textdatei selbstständig erstellen lassen Java Basics - Anfänger-Themen 2
J Java Queue mit default Werten erstellen Java Basics - Anfänger-Themen 4
JaVaN0oB Bruchklasse erstellen Java Basics - Anfänger-Themen 9
N Kreismuster auf Bestehendem Kreis erstellen Java Basics - Anfänger-Themen 10
K Rahmen erstellen mit mehrdimensionalem Array Java Basics - Anfänger-Themen 1
B Hilfe bei Map Liste erstellen Java Basics - Anfänger-Themen 10
F Adjunkte Matrix erstellen Java Basics - Anfänger-Themen 3
J Objekt-Array dynamischer Länge aus Benutzereingaben erstellen Java Basics - Anfänger-Themen 6
T Startbildschirm für ein Spiel erstellen Java Basics - Anfänger-Themen 0
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
GermanPie Discord Text Channel erstellen? Java Basics - Anfänger-Themen 1
K Objektdiagramm erstellen Java Basics - Anfänger-Themen 3
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
D Klassen Klassendiagramm richtig erstellen Java Basics - Anfänger-Themen 20
S Objekte indiziert erstellen Java Basics - Anfänger-Themen 27
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
B Methode für jede beliebe Entity erstellen Java Basics - Anfänger-Themen 7
E Filmsammlung erstellen Java Basics - Anfänger-Themen 6
B Eine Methode erstellen Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
K Quersumme erstellen Java Basics - Anfänger-Themen 7
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
P Arrays "automatisch" erstellen lassen Java Basics - Anfänger-Themen 12
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben