Erstes "kleines" Programm

exylian

Mitglied
Hallo liebe Community,

seit kurzem Befasse ich mich nun mit dem programmieren und habe dies auch mit JAVA begonnen. Somit bin ich noch ein kompletter Neueinsteiger :)

Am gestrigen Abend habe ich mir mal die Zeit genommen und mir ein kleines Einkaufs Programm geschrieben.

Was mich interessieren würde, ob ich dort vielleicht Dinge zu sehr verkompliziert habe und es elegantere Lösungen gibt etc. - Lieber von beginn an richtig machen!

Desweiteren habe ich mir um die Console auf zuräumen Abhilfe geschaffen in dem mir das Programm zu einem Zeitpunkt einfach 20 leere Zeilen ausgibt. (ClearScreen.clearScreen();)

Gibt es dafür elegantere Varianten?


Hier mal mein Code der Main Klasse:

Java:
package de.felixhoevel;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        List<Integer> warenkorbBananen = new ArrayList<Integer>();
        List<Integer> warenkorbAepfel = new ArrayList<Integer>();
        List<Integer> warenkorbErdbeeren = new ArrayList<Integer>();
        List<Integer> warenkorbNutella = new ArrayList<Integer>();
        List<Integer> warenkorbBrot = new ArrayList<Integer>();

        while (true) {

            System.out.println("Welchen Artikel moechten sie einkaufen?");
            System.out.println("0 - Einkauf beenden");
            System.out.println("1 - Bananen");
            System.out.println("2 - Aepfel");
            System.out.println("3 - Erdbeeren");
            System.out.println("4 - Nutella");
            System.out.println("5 - Brot");
            System.out.println("6 - Rechnung anzeigen");

            switch (new Scanner(System.in).nextInt()) {
                case 0:
                    System.out.println("Auf Wiedersehen!");
                    System.exit(0);

                case 1:
                    int i = 0;
                    System.out.println("Die Bananen kosten: " + Prices.BANANEN);
                    System.out.println("Wie viele Bananen moechten sie kaufen?");
                    int numBananen = new Scanner(System.in).nextInt();
                    warenkorbBananen.add(i, numBananen);
                    ++i;

                    break;

                case 2:
                    int ii = 0;
                    System.out.println("Die Aepfel kosten: " + Prices.AEPFEL);
                    System.out.println("Wie viele Aepfel moechten sie kaufen?");
                    int numAepfel = new Scanner(System.in).nextInt();
                    warenkorbAepfel.add(ii, numAepfel);
                    ++ii;

                    break;

                case 3:
                    int iii = 0;
                    System.out.println("Die Erdbeeren kosten: " + Prices.ERDBAEREN);
                    System.out.println("Wie viele Erdbeeren moechten sie kaufen?");
                    int numErdbaeeren = new Scanner(System.in).nextInt();
                    warenkorbErdbeeren.add(iii, numErdbaeeren);
                    ++iii;

                    break;

                case 4:
                    int iiii = 0;
                    System.out.println("Das Nutella kostet: " + Prices.NUTELLA);
                    System.out.println("Wie viele Glaeser Nutella moechten sie kaufen?");
                    int numNutella = new Scanner(System.in).nextInt();
                    warenkorbNutella.add(iiii, numNutella);
                    ++iiii;

                    break;

                case 5:
                    int iiiii = 0;
                    System.out.println("Das Brot kostet: " + Prices.BROT);
                    System.out.println("Wie viele Brote moechten sie kaufen?");
                    int numBrot = new Scanner(System.in).nextInt();
                    warenkorbBrot.add(iiiii, numBrot);
                    ++iiiii;

                    break;

                case 6:
                    // Bananen
                    ListIterator<Integer> liBananen = warenkorbBananen.listIterator();
                    int summeBananen = 0;
                    while (liBananen.hasNext()) {
                        summeBananen += liBananen.next();
                    }
                    double preisBananenGesammt = summeBananen * Prices.BANANEN;

                    //Aepfel
                    ListIterator<Integer> liAepfel = warenkorbAepfel.listIterator();
                    int summeAepfel = 0;
                    while (liAepfel.hasNext()) {
                        summeAepfel += liAepfel.next();
                    }
                    double preisAepfelGesammt = summeAepfel * Prices.AEPFEL;

                    //Erdbeeren
                    ListIterator<Integer> liErdbeeren = warenkorbErdbeeren.listIterator();
                    int summeErdbeeren = 0;
                    while (liErdbeeren.hasNext()) {
                        summeErdbeeren += liErdbeeren.next();
                    }
                    double preisErdbeerenGesammt = summeErdbeeren * Prices.ERDBAEREN;

                    //Nutella
                    ListIterator<Integer> liNutella = warenkorbNutella.listIterator();
                    int summeNutella = 0;
                    while (liNutella.hasNext()) {
                        summeNutella += liNutella.next();
                    }
                    double preisNutellaGesammt = summeNutella * Prices.NUTELLA;

                    //Brot
                    ListIterator<Integer> liBrot = warenkorbBrot.listIterator();
                    int summeBrot = 0;
                    while (liBrot.hasNext()) {
                        summeBrot += liBrot.next();
                    }
                    double preisBrotGesammt = summeBrot * Prices.BROT;

                    double preisGesammtNetto = preisBananenGesammt + preisAepfelGesammt + preisErdbeerenGesammt + preisNutellaGesammt + preisBrotGesammt;
                    double preisGesammtBrutto = preisGesammtNetto * 1.07;

                    //Runden
                    preisGesammtNetto = Math.round((preisGesammtNetto * 100d) / 100d);
                    preisGesammtBrutto = Math.round((preisGesammtBrutto * 100d) / 100d);

                    ClearScreen.clearScreen();
                    System.out.println("Ihre Rechnung:");
                    System.out.println(summeBananen + "x Bananen(" + Prices.BANANEN + ")   Gesammt: " + preisBananenGesammt);
                    System.out.println(summeAepfel + "x Aepfel(" + Prices.AEPFEL + ")   Gesammt: " + preisAepfelGesammt);
                    System.out.println(summeErdbeeren + "x Erdbeeren(" + Prices.ERDBAEREN + ")   Gesammt: " + preisErdbeerenGesammt);
                    System.out.println(summeNutella + "x Nutella(" + Prices.NUTELLA + ")   Gesammt: " + preisNutellaGesammt);
                    System.out.println(summeBrot + "x Brot(" + Prices.BROT + ")   Gesammt: " + preisBrotGesammt);
                    System.out.println("");
                    System.out.println("Preis Netto: " + preisGesammtNetto);
                    System.out.println("zzgl. 7% MwSt");
                    System.out.println("Preis Brutto: " + preisGesammtBrutto);

                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    ClearScreen.clearScreen();
                    break;



                default:
                    System.out.println("Falsche Eingabe");
                    continue;
            }
        }


    }
}


Ich freue mich auf Rückmeldung und verbleibe

Mit freundlichen Grüßen
Felix
 

Context

Mitglied
Ich würd anstelle deiner vielen Listen eine Map (zum Beispiel HashMap) verwenden.
Dann könntest du es wie folgt machen:
Java:
static HashMap<String,Integer> warenkorb = new HashMap<String,Integer>();

public static void add(String gegenstand,int anzahl) {
    warenkorb.put(gegenstand,warenkorb.get(gegenstand)+anzahl);
}
public static void remove(String gegenstand,int anzahl) {
    warenkorb.put(gegenstand,warenkorb.get(gegenstand)-anzahl);
}
public static int get(String gegenstand) {
    return warenkorb.get(gegenstand);
}
Mit diesen Methoden könntest du dann Gegenstände in den Warenkorb hinzufügen,entfernen und überprüfen wieviel drin ist.

Edit: static hinzugefügt
 
Zuletzt bearbeitet:

Hutzli

Aktives Mitglied
Ich denke nicht, dass das so funktioniert. Bei case 0 hast du am Ende das break vergessen. Und wenn du zwei mal Bananen kaufts gehts sicher auch nicht, da du die Variable, welche den Index der Liste speichert, immer wieder neu initialisierst beim nächsten Schleifendurchlauf.

Versuche objektorientiert zu programmieren...

Bezüglich deiner Frage, ich glaube nicht dass das geht. Du kannst formatierte Ausgaben machen.

Bei Linux in der Konsole werden bei dem Befehl "clear" übrigens auch nur Leerzeilen ausgegeben, von dem her ist es sicher nicht schlecht.
 

Saheeda

Top Contributor
Hallo,

while(true)-Schleifen macht man nicht. Die Schleife sollte jederzeit beendbar sein. Du kannst zum Beispiel am Anfang eine Variable machen, welche den Wert true hat und diese z.B. am Ende des Einkaufs auf false setzen.

Du hast bisher alles in der Main-Methode stehen, dadurch ist diese auch sehr sehr lang. Versuche vielleicht, sehr ähnliche Code-Abschnitte in einzelne Methoden zu schreiben. Du sparst dir Schreibarbeit und der Code wird übersichtlicher.

Versuche, dir gleich englische Bezeichnungen für Variablen, Klassen, Objekte etc. anzugewöhnen.

Bisher belegst du bei allen Listen immer nur die erste Position. Wenn es dir rein um die Anzahl der Artikel geht, kannst du auch normale int-Variablen benutzen anstelle der Listen.

Anstatt der fünf Listen für die einzelnen Lebensmittel könnte man auch mit Maps arbeiten, hier hättest du immer Schlüssel-Wert-Paare, z.B. anzahlErdbeeren => 4, anzahlBananen => 2, etc.
Oder man könnte eine allgemeine List<Lebensmittel> anlegen, aber das geht schon in Richtung Vererbung und ist vielleicht noch zu viel "magic".


Viele Grüße,
Saheeda
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T erstes kleines Programm Java Basics - Anfänger-Themen 17
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
C Erstes kleines Problem - string in chat ? Java Basics - Anfänger-Themen 9
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
I Letztes, erstes Element vom Array Java Basics - Anfänger-Themen 9
X Array erstes und letztes Element tauschen Java Basics - Anfänger-Themen 2
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
O Erstes Programm: Matrizen Multiplikation Java Basics - Anfänger-Themen 10
H java erstes projekt Java Basics - Anfänger-Themen 502
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
D Auswahl und Ausgabe erstes Programm Java Basics - Anfänger-Themen 8
M Mein erstes Programm Java Basics - Anfänger-Themen 3
V Erste Schritte Erstes Project - Hilfe Java Basics - Anfänger-Themen 9
M Erste Schritte Erstes Programm mit Compiler öffnen Java Basics - Anfänger-Themen 4
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
J Erstes Applet läßt sich nicht anzeigen Java Basics - Anfänger-Themen 2
M Erstes Textrollenspiel funktioniert...nicht. Java Basics - Anfänger-Themen 2
L Erstes Projekt aus zwei Projekten Java Basics - Anfänger-Themen 1
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
A Erstes Programm: Polynom-Klasse Java Basics - Anfänger-Themen 15
B Erstes Element eines Vectors erhalten Java Basics - Anfänger-Themen 5
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
W Erste Schritte erstes Programm Java Basics - Anfänger-Themen 40
A Textdatei einlesen - erstes Zeichen falsch Java Basics - Anfänger-Themen 20
I Liste Remove erstes Element Java Basics - Anfänger-Themen 5
W Erstes eigens Programm - Klassen- und Schüler Verwaltungsprogramm Java Basics - Anfänger-Themen 5
M Erstes "sinnvolles" Programm Java Basics - Anfänger-Themen 11
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
J Bald erstes Java Buch durchgearbeitet - Wie gehts nun weiter? Java Basics - Anfänger-Themen 6
R [CODECHECK] Erstes Programm Java Basics - Anfänger-Themen 6
T Erstes Zeichen aus String löschen Java Basics - Anfänger-Themen 8
J erstes Prog./Klasse - Konstruktur/Objekterstellung funktioniert nicht Java Basics - Anfänger-Themen 25
M Erstes Programm und Fehlermeldung Java Basics - Anfänger-Themen 5
B erstes Java-Applet Java Basics - Anfänger-Themen 7
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
C Erstes Arraylist Element in for Schleife überspringen Java Basics - Anfänger-Themen 6
G Erstes Java-Programm Java Basics - Anfänger-Themen 10
E Erstes Programm - Problem mit Exception Java Basics - Anfänger-Themen 3
G Feststellen, ob erstes Zeichen eines Strings eine Ziffer ist Java Basics - Anfänger-Themen 11
M Serialisierung erstes Beispiel Java Basics - Anfänger-Themen 4
A erstes größeres Projekt Java Basics - Anfänger-Themen 14
P Mein erstes JAR-File Java Basics - Anfänger-Themen 8
G erstes Zeichen eines Strings herausfinden Java Basics - Anfänger-Themen 3
G erstes element einer haspmap Java Basics - Anfänger-Themen 5
G erstes Arbeiten mit Collections Java Basics - Anfänger-Themen 17
G erstes Arbeiten mit Packages Java Basics - Anfänger-Themen 2
T Erstes RPG: KeyAdapter Problem Java Basics - Anfänger-Themen 3
M erstes Zeichen ersetzen Java Basics - Anfänger-Themen 2
C Konstruktor wird nicht als erstes aufgerufen! Java Basics - Anfänger-Themen 11
L Suche Verbesserungsvorschläge für mein erstes Programm Java Basics - Anfänger-Themen 34
Bierhumpen mein erstes großes Programm. Was ändern? verbessern? Java Basics - Anfänger-Themen 12
O mit Regex erstes Zeichen überprüfen Java Basics - Anfänger-Themen 3
A Mein erstes Programm Java Basics - Anfänger-Themen 6
D JNDI-DataSource erstes mal benutzen Java Basics - Anfänger-Themen 4
T Erstes Programm Java Basics - Anfänger-Themen 7
B Erstes Programm :-/ Java Basics - Anfänger-Themen 3
M Erstes Element einer Enumeration? Java Basics - Anfänger-Themen 6
A Erstes Buch durchgelesen, wie weiter vorgehen? Java Basics - Anfänger-Themen 8
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
S Kleines Quiz Programm Java Basics - Anfänger-Themen 4
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben