Viereck mit Sterne - Anfänger bittet um Kritik und Anregung

Phoebus1974

Neues Mitglied
Hallo,
ich habe soeben mein erstes Programm in Java geschrieben und würde jetzt gerne eure Meinung zu diesem Programm wissen. Was kann ich noch besser machen bzw. wie würdet ihr dieses Programm schreiben.

Die Problemstellung: In der Konsole soll ein Viereck mit Sternen gezeichnet werden.
Code:
********
*      *
*      *
*      *
*      *
*      *
*      *
********


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

        //Seitengröße

        int seiteAsterne = 10;
        int seiteBzeilen = 20;
        int aSterne = seiteAsterne - 1;
        //Viereckdarstellung

        // Zählschleife für die Zeilen beginnt
        for (int sBz = 1; sBz <= seiteBzeilen; sBz++) {

            // Schleife für die Sterne beginnt
            if (sBz == 1 | sBz == seiteBzeilen) {
                for (int sAs = 1; sAs <= seiteAsterne; sAs++) {
                    System.out.print("*"); //Hier wirde die erste und letzte Zeile geschrieben
                }
                System.out.print("\n");
            } else if (sBz > 1 | sBz <= seiteBzeilen) {

                //Hier wird die 2te bis vorletzte Zeile geschrieben
                for (int sAs = 1; sAs <= seiteAsterne; sAs++) {
                    if (sAs == 1) {
                        System.out.print("*");
                    } else if (sAs == 2 | sAs <= aSterne) {
                        System.out.print(" ");
                    } else if (sAs == seiteAsterne) {
                        System.out.print("*");
                    }

                }
                System.out.print("\n");
            }
        }
    }
Danke!
 

XHelp

Top Contributor
Du hast ziemlich viele überflüssige Abfragen. Dein Programm könnte auch so aussehen:
Java:
public static void main(String[] args) {
	char zeichen = '*';
	int seiteAsterne = 10;
	int seiteBzeilen = 10;
	for (int i = 0; i < seiteAsterne; i++) {
		System.out.print(zeichen);
	}
	System.out.println();
	for (int i = 0; i < seiteBzeilen - 2; i++) {
		System.out.print(zeichen);
		for (int j = 0; j < seiteAsterne - 2; j++) {
			System.out.print(" ");
		}
		System.out.println(zeichen);
	}

	for (int i = 0; i < seiteAsterne; i++) {
		System.out.print(zeichen);
	}
	System.out.println();
}

Meiner Meinung nach könntest du dir direkt angewöhnen Schleifen nicht von
Code:
1..<=
, sondern
Code:
0..<
schreiben. Natürlich macht es nicht pauschal immer Sinn, es ist eher Geschmackssache, aber dennoch wirkt die "0..<" Variante vertrauter.
 
Zuletzt bearbeitet:
G

gasssst

Gast
Warum habt ihr soviele Schleifen? Man braucht doch nur zwei

Java:
	public static void main(String[] args) {
		int breite = 10;
		int höhe = 10;
		for(int zeile = 1; zeile <= höhe; zeile++) {
			for (int spalte = 1; spalte <= breite; spalte++) {
				if (spalte == 1 || spalte == breite || zeile == 1 || zeile == höhe) {
					System.out.print("*");
				} else {
					System.out.print(" ");
				}
			}
			System.out.println();
		}
	}
 

jgh

Top Contributor
Sorry XHelp und gasssst,

klar habt ihr Recht damit, dass man gewisse Sachen kompakter, evtl. auch besser proggen könnte...ABER für das erste Programm ist das sauber und gut programmiert.

Der Quellcode ist kommentiert, korrekt eingerückt, die Benamung der Variablen ist evtl. eigenwillig, aber nachvollziehbar. Für das erste Programm ist das eine reife Leistung.
 

jgh

Top Contributor
...
ich habe soeben mein erstes Programm in Java geschrieben und würde jetzt gerne eure Meinung zu diesem Programm wissen. ...

na ja, er fragt schon auch nach einem Feedback für sein Programm.
Eure Antworten sind natürlich absolut korrekt und sicherlich auch sinnig (wobei ich mir das nicht weiter angeschaut habe), nur vermisse ich dabei das Lob für den TO.

Denn im Gegensatz zu vielen anderen Noobs hier, macht er hundert Sachen richtig. Bspw. Java-Tags^^, eine vernünftige Themenüberschrift und der Code ist grundsätzlich sauber und korrekt.

Egal, ich finde das es grundsätzlich sehr gut ist...Verbesserungsmöglichkeiten haben gasssst und XHelp aufgezeigt, das Lob wollte ich noch bringen und dann soll es das gewesen sein. :)
 

faetzminator

Gesperrter Benutzer
Wenn man sich eine Hilfsmethode [c]createString(char c, int len)[/c] schreibt, dann kann man sogar so etwas kurzes schreiben:
Java:
int width = ...;
int height = ...;

System.out.println(createString('*', width));
for (int i = 2; i < height; i++) {
    System.out.println('*' + createString(' ', width) + '*');
}
System.out.println(createString('*', width));
 

HimBromBeere

Top Contributor
Denn im Gegensatz zu vielen anderen Noobs hier, macht er hundert Sachen richtig. Bspw. Java-Tags^^, eine vernünftige Themenüberschrift und der Code ist grundsätzlich sauber und korrekt.
Da hast du Recht, einen so guten Anfänger-Beitrag sieht man selten...:toll::toll:

Wie dem auch sei, eine Kleinigkeit hab ich noch. Die Varaiblennamen
Code:
ersteASterne
und
Code:
ersteBZeile
finde ich irgendwie suboptimal, wie wär´s mit anz_zeilen, anz_spalten?
 
D

Dow Jones

Gast
Hallo,
ich habe soeben mein erstes Programm in Java geschrieben und würde jetzt gerne eure Meinung zu diesem Programm wissen. Was kann ich noch besser machen bzw. wie würdet ihr dieses Programm schreiben.

Also wenn das tatsächlich dein erstes selbstgeschriebenes Programm war - dann ist das exzellente Arbeit. Hut ab! :)
Für den Murray-Bozinsky-Orden reicht es aber dennoch nicht, denn ich sehe da noch einen winzigen Schönheitsfehler: In der Zeile
Java:
else if (sAs == 2 | sAs <= aSterne)
ist die erste Bedingung unnötig (die ist ja implizit in der zweiten Bedingung mit enthalten). Folglich kann man den [c]sAs == 2[/c]-Teil auch weglassen. Noch schöner wäre allerdings diese Lösung:
Java:
else if (sAs > 1  &  sAs < aSterne)
Das würde den Sinn der if-Abfrage denke ich noch am ehesten wiedergeben, nämlich das in diesen else-Teil nur dann verzweigt werden soll wenn sAs zwischen 1 und aSterne liegt. Außerdem wird das Programm dadurch etwas robuster (wenn du dein Programm irgendwann mal abänderst/ausbaust, und dadurch z.B. auch negative Werte für sAs möglich werden, dann kann eine unpräsize formulierte if-Bedingung irgendwo im Programm durchaus eine lange Fehlersuche erfordern. Daher sollte man besser gleich von Anfang an exakt formulieren was man erreichen möchte. Je genauer man seine Werte unter Kontrolle hat desto leichter wird eine Fehlersuche ;)).
 

Phoebus1974

Neues Mitglied
Hallo Communites,

danke für eure Meinung und Verbesserungsvorschläge, werde bei Gelegenheit das Programm noch ein bisschen modifizieren.

Gruß Phoebus1974
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
A 2D Array Magisches Viereck Java Basics - Anfänger-Themen 4
L Magisches Viereck - Probleme mit Arrays Java Basics - Anfänger-Themen 3
R Viereck zeichnen über TextField-Eingabe /ActionListener Java Basics - Anfänger-Themen 9
A Viereck erstellen und Webcamtracking Java Basics - Anfänger-Themen 6
M Viereck "wandern" lassen Java Basics - Anfänger-Themen 5
K JPanel, JFrame, paint() und wo ist mein Viereck ? Java Basics - Anfänger-Themen 19
Z Ausgabe: Anzahl Sterne, danach verringern Java Basics - Anfänger-Themen 7
J Sterne in Keilform Java Basics - Anfänger-Themen 2
T Sterne zeichnen Java Basics - Anfänger-Themen 4
J Zählschleife Sterne Java Basics - Anfänger-Themen 2
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
M Java Programmierung Aufgabe Anfänger Java Basics - Anfänger-Themen 1
JordenJost Java ist auch eine Insel für Anfänger Java Basics - Anfänger-Themen 2
R Anfänger: Ausgabe kommt minus raus? Java Basics - Anfänger-Themen 6
D Zahlentabelle Anfänger braucht Hilfe Java Basics - Anfänger-Themen 1
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
T Übungsbuch für Anfänger Java Basics - Anfänger-Themen 3
H Threads Anfänger Java Basics - Anfänger-Themen 17
C Erste Schritte Anfänger Verständnisfrage zum Compiler Java Basics - Anfänger-Themen 31
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
K Buchstabenzähler Java (Anfänger) Java Basics - Anfänger-Themen 35
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
U anfänger braucht hilfe . wir konnten die aufgaben nicht beantworten Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
L Anfänger braucht Hilfe - Stecke beim Lernen fest Java Basics - Anfänger-Themen 10
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
_Zabuza_ Erste Schritte Wie am effektivsten Java lernen als Anfänger? Java Basics - Anfänger-Themen 12
T Roulette für Anfänger Java Basics - Anfänger-Themen 7
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
K Java Anfänger Java Basics - Anfänger-Themen 5
F Hilfe für einen Anfänger! Java Basics - Anfänger-Themen 4
S Ein Java Anfänger braucht Hilfe Java Basics - Anfänger-Themen 5
P Übungsaufgaben für Anfänger? Java Basics - Anfänger-Themen 2
Z Unklarheit bei Übungsaufgabe [Anfänger] Java Basics - Anfänger-Themen 22
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
O Anfänger, Verständnisfrage Java Basics - Anfänger-Themen 3
CT9288 Mini Anfänger-Problem mit loops, statements und ; Java Basics - Anfänger-Themen 4
F Hilfe, bin Anfänger! Java Basics - Anfänger-Themen 4
R Erste Schritte Materialien für Java-Anfänger Java Basics - Anfänger-Themen 7
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
F Studium aufgabe ...Anfänger sucht hilfe :D Java Basics - Anfänger-Themen 24
F Anfänger braucht Hilfe :) Java Basics - Anfänger-Themen 3
F Abrechnungsprogramm erstellen Student (Anfänger) Java Basics - Anfänger-Themen 2
D Anfänger braucht Hilfe Java Basics - Anfänger-Themen 2
J Musikplayer zu schwer für Anfänger? Java Basics - Anfänger-Themen 3
F Wieso wird dieser Befehl nicht ausgeführt? (Anfänger) Java Basics - Anfänger-Themen 2
V Erste Schritte Anfänger: Ausführen eines Java-Programms Java Basics - Anfänger-Themen 5
Textsurfer Methoden Anfänger * Java Basics - Anfänger-Themen 5
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
J Anfänger: ActionListener und ProcessBuilder machen Probleme Java Basics - Anfänger-Themen 6
C verwirrter Anfänger Java Basics - Anfänger-Themen 6
L Verzinsungsprogramm (Java-Anfänger) Java Basics - Anfänger-Themen 3
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
I if/else Statements Java Anfänger Java Basics - Anfänger-Themen 14
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
H Schleifen (anfänger) Java Basics - Anfänger-Themen 13
H Methoden Bluej Anfänger Java Basics - Anfänger-Themen 13
M Erste Schritte Einfache Aufzugssteuerung programmieren - Anfänger Java Basics - Anfänger-Themen 2
D Anfänger-Problem mit dem HalloWelt-Programm Java Basics - Anfänger-Themen 5
S Compiler-Fehler Anfänger sucht Hilfe. Fehler beim Compilieren Java Basics - Anfänger-Themen 6
V Erste Schritte Java-Anfänger braucht Hilfe bei Arrays Java Basics - Anfänger-Themen 19
V Array mit Zufallszahlen - Anfänger - Hilfe Java Basics - Anfänger-Themen 12
J Anfänger hat Problem mit seinen Beet Java Basics - Anfänger-Themen 12
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
das_leon if als Auswahl (Anfänger) Java Basics - Anfänger-Themen 1
N Anfänger Problem Java Basics - Anfänger-Themen 4
GoodGuy [Anfänger] Kann mal wer drüber gucken? Java Basics - Anfänger-Themen 3
R Erste Schritte Anfänger Probleme bei AnimationDrawable Java Basics - Anfänger-Themen 0
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taxiwarteschlange - Anfänger Java Basics - Anfänger-Themen 2
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
I Java, Application, Eclipse (Anfänger) Java Basics - Anfänger-Themen 1
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
C Anfänger: Array + Klasse Java Basics - Anfänger-Themen 5
S OOP Uhrenanzeige programmieren, Achtung Anfänger! Java Basics - Anfänger-Themen 9
B Compiler-Fehler Ein Java-Eclipse-Anfänger geht auf Reisen... Java Basics - Anfänger-Themen 10
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
I totaler Anfänger braucht Hilfe Java Basics - Anfänger-Themen 8
I Erste Schritte Bücher für Jungedliche[Anfänger] Java Basics - Anfänger-Themen 20
T Hallo anfänger braucht Hilfe :D Java Basics - Anfänger-Themen 7
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
J Hilfe für Anfänger Java Basics - Anfänger-Themen 8
E OOP Methode an andere Methode übergeben / OOP Anfänger Java Basics - Anfänger-Themen 4
Farbenfroh Exceptions Anfänger - Finde Fehler nicht Java Basics - Anfänger-Themen 7
H MergeSort (für Anfänger ) Java Basics - Anfänger-Themen 9
X Projekt Java Anfänger Java Basics - Anfänger-Themen 28
C Fehlersuche Adressbuch *Anfänger* Java Basics - Anfänger-Themen 5
C Anfänger braucht Hilfe bei Schularbeit Java Basics - Anfänger-Themen 3
J Erste Schritte Hilfe bei absolutem Anfänger-Projekt Java Basics - Anfänger-Themen 4
F Anfänger braucht Hilfe Java Basics - Anfänger-Themen 24
A Erste Schritte Übungen für Anfänger Java Basics - Anfänger-Themen 31
M Sieb des Eratosthenes für Anfänger Java Basics - Anfänger-Themen 10
M Tipps für einen Java-Anfänger Java Basics - Anfänger-Themen 5
S Anfänger Aufgaben Java Basics - Anfänger-Themen 6
G Anfänger-Errors und Fragen Java Basics - Anfänger-Themen 22

Ähnliche Java Themen

Neue Themen


Oben