Kann mir jemand kurz dieses Programm erklären?

Freeeed

Mitglied
Hallo,

Für die Schule müssen wir ein Programm schreiben dass eine Buchstabenpyramide ausgibt:

Für 'C':

-- A
-ABA
ABCBA

Für 'D':

---- A
---ABA
-ABCBA
ABCDCBA

(Die "-" sollen Leerzeichen sein)

usw.


Ich komme leider auf keine richtige Lösung, hat vielleicht jemand eine Idee?


Mit freundlichen Grüßen

Fred
 
K

kneitzel

Gast
Kriegst Du es denn mit Stift und kariertem Papier hin, so eine Pyramide zu schreiben?

Wenn ja: Wie gehst Du vor? Kannst Du es ganz genau beschreiben, so dass Du es jemandem beschreiben kannst, der die Aufgabe nicht kennt und nun mit einem Stift auf kariertem Papier so eine Pyramide schreiben will. Und natürlich Zeile für Zeile von oben nach unten!

Und wenn Du es nicht kannst: Woran scheiterst Du denn? Was für Schritte hast Du denn identifiziert, die notwendig sind?
 

Jw456

Top Contributor
Fragen due du beantworten können solltest sind zb der wievielte Buchstabe ist C.
Wieviel Zeilen werden es werden?
Mit wievielen Leerzeichen musst du anfangen.....?
 

Freeeed

Mitglied
Kriegst Du es denn mit Stift und kariertem Papier hin, so eine Pyramide zu schreiben?

Wenn ja: Wie gehst Du vor? Kannst Du es ganz genau beschreiben, so dass Du es jemandem beschreiben kannst, der die Aufgabe nicht kennt und nun mit einem Stift auf kariertem Papier so eine Pyramide schreiben will. Und natürlich Zeile für Zeile von oben nach unten!

Und wenn Du es nicht kannst: Woran scheiterst Du denn? Was für Schritte hast Du denn identifiziert, die notwendig sind?
Vielen Dank, das werde ich probieren.
 

temi

Top Contributor
Fragen due du beantworten können solltest sind zb der wievielte Buchstabe ist C.
Wieviel Zeilen werden es werden?
Mit wievielen Leerzeichen musst du anfangen.....?
Und auch ganz wichtig: Wie hängen der n-te Buchstabe, die Anzahl der Zeilen und die Anzahl der Leerzeichen voneinander ab? Gibt es eine bestimmte Beziehung, die man allgemein ausdrücken kann?
 

Freeeed

Mitglied
Hey,

Danke für alle eure Antworten :)

Das ist jz meine finale Form:

import java.util.Scanner;
public class BuchstabenPyramide {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
String Buchstabe = scn.next();

int reihen = Integer.parseInt(Pyramide(Buchstabe));
for (int i = 1; i <= reihen; i++) {
for (int j = 1; j <= reihen - i; j++) {
System.out.print(" ");
}
for (int j = 1; j <= i; j++) {
System.out.print((char) (j + 64));
}
for (int j = i - 1; j >= 1; j--) {
System.out.print((char) (j + 64));
}
System.out.println();
}
scn.close();
}

public static String Pyramide(String Buchstabe) {
if (Buchstabe.equals("A")) {
Buchstabe = "1";
} else if (Buchstabe.equals("B")) {
Buchstabe = "2";
} else if (Buchstabe.equals("C")) {
Buchstabe = "3";
} else if (Buchstabe.equals("D")) {
Buchstabe = "4";
} else if (Buchstabe.equals("E")) {
Buchstabe = "5";
} else if (Buchstabe.equals("F")) {
Buchstabe = "6";
} else if (Buchstabe.equals("G")) {
Buchstabe = "7";
} else if (Buchstabe.equals("H")) {
Buchstabe = "8";
} else if (Buchstabe.equals("I")) {
Buchstabe = "9";
} else if (Buchstabe.equals("J")) {
Buchstabe = "10";
} else if (Buchstabe.equals("K")) {
Buchstabe = "11";
} else if (Buchstabe.equals("L")) {
Buchstabe = "12";
} else if (Buchstabe.equals("M")) {
Buchstabe = "13";
} else if (Buchstabe.equals("N")) {
Buchstabe = "14";
} else if (Buchstabe.equals("O")) {
Buchstabe = "15";
} else if (Buchstabe.equals("P")) {
Buchstabe = "16";
} else if (Buchstabe.equals("Q")) {
Buchstabe = "17";
} else if (Buchstabe.equals("R")) {
Buchstabe = "18";
} else if (Buchstabe.equals("S")) {
Buchstabe = "19";
} else if (Buchstabe.equals("T")) {
Buchstabe = "20";
} else if (Buchstabe.equals("U")) {
Buchstabe = "21";
} else if (Buchstabe.equals("V")) {
Buchstabe = "22";
} else if (Buchstabe.equals("W")) {
Buchstabe = "23";
} else if (Buchstabe.equals("X")) {
Buchstabe = "24";
} else if (Buchstabe.equals("Y")) {
Buchstabe = "25";
} else if (Buchstabe.equals("Z")) {
Buchstabe = "26";
} else {
Buchstabe = "0";
}
return Buchstabe;
}

}

denkt ihr, man kann noch was verbessern?
 

mihe7

Top Contributor
Das ist jz meine finale Form:
o_O

Mal kurz vorab: wenn Du Code postest, bitte im Editor oben links auf </> klicken und dort den Code einfügen. Das kann man dann viel besser lesen und der Editor kommt auch nicht mit Formatierungen durcheinander.

Zum Thema:
int reihen = Integer.parseInt(Pyramide(Buchstabe));
Du hast hier eine Methode Pyramide, die einen String zurückliefert, der eine Zahl enthält und diese Zahl wandelst Du jetzt in einen int um. Das ist "ein bisschen" kompliziert. Lass doch einfach die Methode Pyramide statt eines Strings gleich ein int zurückgeben.

Dann hätten wir den Methodennamen "Pyramide"... der ist ja nun absolut nichtssagend. Du willst offensichtlich die Zahl der Reihen ermitteln, also wieso nicht "ermittleReihen"?
Java:
static int ermittleReihen(String text) {
...
}
Übrigens: in Java schreibt man Namen von Variablen und Methoden in lowerCamelCase.

Wie sieht die Methode nun aus? Die Methode erhält nun einen String. Dich interessiert aber nur der erste Buchstabe (darum habe ich den Parameter text und nicht buchstabe genannt).

Mit Hilfe von charAt kann man ein Zeichen im String ermitteln. Jetzt muss man noch ein paar Dinge überlegen:
  1. Der Text könnte leer sein. Dann hätte man 0 Reihen.
  2. Das erste Zeichen könnte außerhalb des Alphabets liegen. Dann hätte man ebenfalls 0 Reihen.
Java:
static int ermittleReihen(String text) {
    if (text.isEmpty()) {
        return 0;
    }

    char zeichen = text.charAt(0);
    if (zeichen < 'A' || zeichen > 'Z') { // zeichen liegt außerhalb des Alphabets (Großbuchstaben)
        return 0;
    }

    return zeichen - 64; // ich präferiere: return zeichen - 'A' + 1; aber da Du schon mit 64 arbeitest....
}
 

Freeeed

Mitglied
o_O

Mal kurz vorab: wenn Du Code postest, bitte im Editor oben links auf </> klicken und dort den Code einfügen. Das kann man dann viel besser lesen und der Editor kommt auch nicht mit Formatierungen durcheinander.

Zum Thema:

Du hast hier eine Methode Pyramide, die einen String zurückliefert, der eine Zahl enthält und diese Zahl wandelst Du jetzt in einen int um. Das ist "ein bisschen" kompliziert. Lass doch einfach die Methode Pyramide statt eines Strings gleich ein int zurückgeben.

Dann hätten wir den Methodennamen "Pyramide"... der ist ja nun absolut nichtssagend. Du willst offensichtlich die Zahl der Reihen ermitteln, also wieso nicht "ermittleReihen"?
Java:
static int ermittleReihen(String text) {
...
}
Übrigens: in Java schreibt man Namen von Variablen und Methoden in lowerCamelCase.

Wie sieht die Methode nun aus? Die Methode erhält nun einen String. Dich interessiert aber nur der erste Buchstabe (darum habe ich den Parameter text und nicht buchstabe genannt).

Mit Hilfe von charAt kann man ein Zeichen im String ermitteln. Jetzt muss man noch ein paar Dinge überlegen:
  1. Der Text könnte leer sein. Dann hätte man 0 Reihen.
  2. Das erste Zeichen könnte außerhalb des Alphabets liegen. Dann hätte man ebenfalls 0 Reihen.
Java:
static int ermittleReihen(String text) {
    if (text.isEmpty()) {
        return 0;
    }

    char zeichen = text.charAt(0);
    if (zeichen < 'A' || zeichen > 'Z') { // zeichen liegt außerhalb des Alphabets (Großbuchstaben)
        return 0;
    }

    return zeichen - 64; // ich präferiere: return zeichen - 'A' + 1; aber da Du schon mit 64 arbeitest....
}
Das ist echt gut geworden dadurch Danke, und an das Code einfügen werde ich ab jetzt denken :)
 

Blut1Bart

Bekanntes Mitglied
Ich hätte die Pyramide vielleicht "umgekehrt" gezeichnet:

Java:
    public static void printPyramide(int x) {
        String[] array = new String[x];
        for (int j = 0; j < x; j++) {
            String s = "";
            for (int i = x - j; i > 0; i--) {
                s += " ";
            }
            for (int i = 'A'; i <= 'A' + j; i++) {
                s += (char) i;
            }
            for (int i = 'A' + j - 1; i >= 'A'; i--) {
                s += (char) i;
            }
            array[j] = s;
        }
        for (String s : array) {
            System.out.println(s);
        }
    }

    public static void main(String[] args) {
        printPyramide('F' - 'A' + 1);
    }
 

Blender3D

Top Contributor
[CODE lang="java" title="TestPyramide" highlight="7-11"]public class TestPyramide {
public static void main(String[] args) {
printPyramid(12);
}

public static void printPyramid(int size) {
for (int lineNr = 0; lineNr < size; lineNr++) {
String str = getTabStr(size, lineNr);
str += getLineStr(lineNr);
System.out.println(str);
}
}

private static String getLineStr(int line) {
String str = "";
int i = 0;
for (i = 0; i < line; i++)
str += (char) (i + 'A');
for (; i >= 0; i--)
str += (char) (i + 'A');
return str;
}

private static String getTabStr(int size, int line) {
String str = "";
for (int i = 0; i < size - line - 1; i++)
str += "-";
return str;
}
}[/CODE]
 

Blender3D

Top Contributor
Ne, Ansichtssache ist das nicht. Mir kann auch keiner sagen, er hätte keine Zeit, die Klammern zu setzen...
Ich lasse die Klammer weg wenn es nicht nötig ist. Spart eine Zeile Code und ist dank Einrückung kein Nachteil.
Sprachen wie Pyhton verzichten auf die Klammer ganz. Find ich persönlich nicht gut.
Deiner Meinung nach sollte man die Klammern immer machen. Ich mache es nicht immer. Der Compiler hat kein Problem damit.
Also steht meine Sichtweise Deiner Sichtweise gegenüber. Ergo ist das eine Ansichtssache.
 
K

kneitzel

Gast
Ne, Ansichtssache ist das nicht. Mir kann auch keiner sagen, er hätte keine Zeit, die Klammern zu setzen...
Ganz offensichtlich ist es doch Ansichtssache, denn wie Du unschwer erkennen konntest, hat @Blender3D eine andere Ansicht zu diesem Punkt.

Generell würde ich Dir aber zustimmen - Eine Ausnahme wäre in meinen Augen lediglich eine GuardClause.

Und natürlich ist zu sehen: mit aktuellen IDEs sollte der Code immer richtig eingerückt und auch sonst formatiert sein, so dass das Argument Lesbarkeit (Das war ja hier vorgebracht: "das sieht ja furchtbar aus!") nicht zieht.

Aber dafür gibt es andere Gründe wie eine höhere Sicherheit bei Refactorings.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
marcooooo Kann mir jemand das Beispiel kurz erklären so ungefähr:/ Java Basics - Anfänger-Themen 7
T Kann jemand kurz das Programm testen? Java Basics - Anfänger-Themen 13
S Kann mir jemand kurz die Vorteile des Iterators erklaeren..? Java Basics - Anfänger-Themen 8
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
U Kann mir jemand helfen? Java Basics - Anfänger-Themen 2
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
C Kann mir jemand sagen warum public void unzulässig ist? Java Basics - Anfänger-Themen 2
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
C Kann mir jemand helfen was mit diesen Fehlern gemeint ist ? Java Basics - Anfänger-Themen 12
M Kennt jemand die richtige Lösung? Java Basics - Anfänger-Themen 7
HeiTim Kann mir Jemand helfen ? Java Basics - Anfänger-Themen 11
H Versteht jemand diesen Codewars Error? Java Basics - Anfänger-Themen 8
M BerechneEtwas Weiss jemand woran es liegt Java Basics - Anfänger-Themen 8
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 2
M Kann mir jemand hier die Logik vermitteln? Java Basics - Anfänger-Themen 3
M Kann mir jemand die Logik erklären? Java Basics - Anfänger-Themen 1
M Könnte mir jemand diese Aufgabe erklären? Java Basics - Anfänger-Themen 9
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
G Weiß jemand wie man dieses Programm schreibt? Java Basics - Anfänger-Themen 84
A Kann mir Jemand erklären wie ich das iteriere? Java Basics - Anfänger-Themen 4
G Fehlersuche-kann mir jemand helfen? Java Basics - Anfänger-Themen 46
T Aufgabe Flussdiagramm, kann jemand checken? Java Basics - Anfänger-Themen 8
J Hat jemand einen Lösungsansatz für diese Aufgabe? Java Basics - Anfänger-Themen 1
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
R Kann mir hier jemand weiterhelfen? Java Basics - Anfänger-Themen 1
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
A Kann mir jemand dieses Programm erklären? Java Basics - Anfänger-Themen 1
B Kann mir jemand diese Bedingung erklären Java Basics - Anfänger-Themen 5
B Kann mir jemand erklären, warum hier dreimal was ausgegeben wird und nicht nur zweimal? Java Basics - Anfänger-Themen 16
B Könnte jemand über dieses jurze Javaprogramm schauen? Irgendwas funktioniert mit der z-Varible nicht Java Basics - Anfänger-Themen 2
E Input/Output Kann jemand meinen Code durchschauen? Java Basics - Anfänger-Themen 4
T Kann mir jemand sagen, was bei folgender for-Schleife passiert? Java Basics - Anfänger-Themen 1
F Versteht das jemand? -Java Java Basics - Anfänger-Themen 6
J TabelView - Kann mir jemand die Sequenz genau erklären ? Java Basics - Anfänger-Themen 2
K Könnte mir jemand erläutern, was der autor damit meint? Java Basics - Anfänger-Themen 5
J Kann mir bitte mal jemand diese Codes erklären? Java Basics - Anfänger-Themen 19
A Hat jemand einen ratschlag, wie java beim replaceALL eine geschweifte klammer erkennt ? Java Basics - Anfänger-Themen 5
H Java Hamster - kann mir jemand weiterhelfen? Java Basics - Anfänger-Themen 4
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Java Basics - Anfänger-Themen 4
R Kann jemand diese Java Programmierung machen? Versteh ich leider nicht Java Basics - Anfänger-Themen 17
R weiß jemand warum Java diesen Fehler ausspuckt? "Variable might not hav been initialized" Java Basics - Anfänger-Themen 4
R kann mir jemand erklären was hier gemacht wurde? Java Basics - Anfänger-Themen 10
I kann mir jemand weiterhelfen, wo liegen die Fehler? Java Basics - Anfänger-Themen 3
E Kann mir jemand sagen was hier falsch ist? Java Basics - Anfänger-Themen 6
gonzoradio Hat jemand Erfahrung mit javavideokurs.de Java Basics - Anfänger-Themen 5
D Kann mir vielleicht jemand die reflexive Assoziation erklären? Java Basics - Anfänger-Themen 2
C Hat jemand Ahnung zum GCJ(Gnu Compiler for Java) Java Basics - Anfänger-Themen 7
M Kann mir bitte jemand "java.util.ArrayList" erklären? Java Basics - Anfänger-Themen 5
S Kennt jemand die Default-Cache Zeit beim Java-Plugin? Java Basics - Anfänger-Themen 2
B könnte nochmal jemand über mein Projekt schauen? Java Basics - Anfänger-Themen 4
S unschöne schleifen.jemand ne bessere idee Java Basics - Anfänger-Themen 4
K Kennt jemand ein gutes Tutorial für Wertübergabe? Java Basics - Anfänger-Themen 4
G Kann mir jemand das erklären? Java Basics - Anfänger-Themen 11
S Hat jemand eine Idee warum die JLabels nicht mehr farbig Java Basics - Anfänger-Themen 7
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
G Nutzt Jemand JCalendar? Java Basics - Anfänger-Themen 3
C Kann jemand mir helfen? Java Basics - Anfänger-Themen 15
N Kann mir bitte jemand helfen? Java Basics - Anfänger-Themen 6
M Kann mir jemand erklären, wie "static" funktionier Java Basics - Anfänger-Themen 2
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
M Threads Thread ist nur kurz interrupted, dann wieder nichtmehr Java Basics - Anfänger-Themen 6
K Programm ohne Threads kurz Pausieren Java Basics - Anfänger-Themen 4
S 2 kurz Fragen zur Möglichkeit der Programmierung Java Basics - Anfänger-Themen 7
J Brauch kurz hilfe bei nem kleinem Zahlenschloss Programm. :) Java Basics - Anfänger-Themen 12
manunana89 Programm kurz pausieren??? Java Basics - Anfänger-Themen 6
H Kann das mal kurz einer ausführen ^^ . thx Java Basics - Anfänger-Themen 10
G long zu kurz Java Basics - Anfänger-Themen 5
V Grafik ist nur ganz kurz sichtbar Java Basics - Anfänger-Themen 3
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
cmn489 Werte beim Funktionsaufruf in ein Feld übertragen(falls dieses leer ist) Java Basics - Anfänger-Themen 1
1 Wie dieses Muster am einfachsten erkennen? Java Basics - Anfänger-Themen 32
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
Salvatore321 Wie kann ich dieses Zustandsdiagramm am besten Umsetzen? Java Basics - Anfänger-Themen 5
Sajeel Chattha Dieses Programm umschreiben Java Basics - Anfänger-Themen 5
M Wie erstelle ich dieses Parallelogramm??? Java Basics - Anfänger-Themen 6
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
ChrisPL4Y Wieso funktioniert dieses Programm nicht? Java Basics - Anfänger-Themen 6
TechGirl JAVA GUI Oberfläche Umkreisung - wie heißt dieses Element? Java Basics - Anfänger-Themen 2
W Methoden Methode auf Array aufrufen, und dieses Array dabei ändern? Java Basics - Anfänger-Themen 10
Tacofan Was macht dieses "Stückchen Code"? Java Basics - Anfänger-Themen 3
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
M Warum ist dieses Feld der Klasse Math immutable? Java Basics - Anfänger-Themen 7
R Wieso funktioniert dieses Array nicht? Java Basics - Anfänger-Themen 13
M Wie heisst dieses Sortierverfahren? Java Basics - Anfänger-Themen 6
G Wo ist die Eigenschaft dieses JFrames versteckt? Java Basics - Anfänger-Themen 5
G Wie nennt man dieses Konstrukt Java Basics - Anfänger-Themen 3
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
F Was soll dieses Programm genau machen ? Java Basics - Anfänger-Themen 9
P OOP Wie schreib ich dieses Programm am besten? Java Basics - Anfänger-Themen 6
D Was genau bedeutet und bewirkt dieses @override? Java Basics - Anfänger-Themen 15
P Datentypen Warum würde dieses Beispiel nicht funktionieren? Java Basics - Anfänger-Themen 6
G Aus eigenem Panel dieses Löschen Java Basics - Anfänger-Themen 2
S für was steht dieses e ?? Java Basics - Anfänger-Themen 4
J Was bedeutet dieses a [i].length? Java Basics - Anfänger-Themen 3
D Wie bringe ich dieses Programm als .jar zum laufen ? Java Basics - Anfänger-Themen 12
R Image aus jar laden (dieses mal awt) Java Basics - Anfänger-Themen 19
W "Sprechen Sie Java?" suche dieses Buch gebraucht! Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben