zu viele Zeilen in der Main Methode

s_1895

s_1895

Mitglied
Wir haben folgendes Programm und dieses ist wie in der Überschrift steht zu lang, wie kann ich dies kürzen dass ich weiterhin auf die Variablen zugreifen kann
Java:
public static void main(String[] args) {
           Scanner scanner = new Scanner(System.in);   
        Zimmer[] zi = new Zimmer[6];
        zi[0] = new Flur();
        zi[1] = new Kueche();
        zi[2] = new Badezimmer();
        zi[3] = new Schlafzimmer();
        zi[4] = new Arbeitszimmer();
        zi[5] = new Wohnzimmer();
                
        //Lokale Variablen
        boolean inDerWohnung = true;
        int auswahl = 1;
        String auswahlWelchesZimmer;
        int zimmer;
        zimmer = 0;
            
            
                
        //Initialisierung der Objekte
        zi[0].setName("Flur");
        zi[1].setName("Kueche");
        zi[1].setHerd(false);
        zi[2].setName("Badezimmer");
        zi[2].setDusche(false);
        zi[3].setName("Schlafzimmer");
        zi[4].setName("Arbeitszimmer");
        zi[5].setName("Wohnzimmer");
        for (int i = 0; i <= zi.length; i++) {
            zi[i].setLicht(false);
        }

            //Anfang der Schleife
        while (inDerWohnung) {
            zi[zimmer].betreten();
            zi[zimmer].ausgabeMenu();
                    
            auswahl = scanner.nextInt();
                
            //Methode zur auswahl welche funktion.
            //Auswahl 1 : Licht anschalten
            if (auswahl == 1) {
                zi[zimmer].lichtschalterBetaetigen();
            
                // ein Zimmer zur�ck oder Wohnung verlassen
                //und warnung anzeigen lassen
                            
            } else if (auswahl == 2) {
                if (zimmer <= 0) {
                    for (int i = 0; i < zi.length; i++) {
                        zi[i].warnung(i);
                    }
                            
                    System.out.println("Du hast die Wohnung verlassen");
                    inDerWohnung = false;
                } else if (zimmer > 0) {
                            
                    zimmer = zimmer - 1;
                }
            //neues Nachbarzimmer wird ausgew�hlt
            } else if (auswahl == 3) {
        System.out.println("Welches Nachbarzimmer? ");

             //wenn das Zimmer 0  (Flur) werden alle ausgew�hlt
                if (zimmer == 0) {
                    System.out.println("a) " + zi[1].getName());
                    System.out.println("b) " + zi[2].getName());
                    System.out.println("c) " + zi[3].getName());
                    System.out.println("d) " + zi[4].getName());
                            
                    auswahlWelchesZimmer = scanner.next();
                            
                    switch (auswahlWelchesZimmer) {
                            
                    case "a": zimmer = 1;
                    break;
                                
                    case "b": zimmer = 2;
                    break;
                                
                    case "c": zimmer = 3;
                    break;
                                
                    case "d": zimmer = 4;
                    break;
                            
                    default: System.out.println("ung�ltige Ausgabe!");
                    break;
                            
                            
                    }
                   //wenn das zimmer nichzt flur dann eins davor
                   //Eins danach und Flur
                } else if (zimmer <= zi.length && zimmer > 0) {
                    System.out.println("a) " + zi[zimmer - 1].getName());
                    System.out.println("b) " + zi[zimmer + 1].getName());
                    System.out.println("c) " + zi[0].getName());
                            
                    auswahlWelchesZimmer = scanner.next();
                            
                    switch (auswahlWelchesZimmer) {
                            
                    case "a":
                        zimmer = zimmer - 1;
                        break;
                                
                    case "b":
                        zimmer = zimmer + 1;
                        break;
                                
                    case "c":
                        zimmer = 0;
                        break;
                            
                    default:
                        System.out.println("ung�ltige Ausgabe!");
                        break;
                    }

                }
                    
                 //Wenn 4 gewaehlt wird wird je nach Kueche oder Bad
                //der Herd oder die Dusche an/ausgemacht
            } else if (auswahl == 4) {
                if (zimmer == 1) {
                    zi[1].herdBetaetigen();
                }
                if (zimmer == 2) {
                    zi[2].duscheBetaetigen();
                } else {
                    System.out.println("ung�ltige Auswahl");
                }
                    
            } else {
                System.out.println("ungueltige Auswahl");
 
mihe7

mihe7

Top Contributor
Java:
public static void main(String[] args) {
    doSomething(args);
}

private static void doSomething(String[] args) {
   // Dein Code
}
Problem gelöst :)

OK, Gegenfrage: was sollst Du tun? Den Code auf Methoden aufteilen? Das kannst Du machen und die Variablen kannst Du als Parameter übergeben.
 
s_1895

s_1895

Mitglied
Wir müssen für die Uni eine Hausaufgabe schreiben.
Aufgabe war dass wir eine Wohnung erstellen, wo wir mit der Eingabe einer der Zahlen den Raum wechseln können oder Licht bzw. Herd oder so anmachen können. Wir haben immer genaue Checkstyle vorgaben, sonst können wir dass Programm nicht hochladen nun sagt er uns allerdings wir hätten 10 Zeilen zu viel.
Ich weiß leider nicht wie die Methoden genau aufteilen kann, so dass auch alles noch funktioniert
 
mihe7

mihe7

Top Contributor
Da mir der Zweck der Übung nicht bekannt ist und ich Euren Kenntnisstand nicht kenne, geh ich mal nur auf die Zeilenreduktion ohne zusätzliche Methoden ein... 15/16 kannst Du z. B. in einer Zeile schreiben. Haben die Zimmerklassen einen Konstruktor, der wenigstens den Namen entgegennimmt? Dann könntest Du Dir das separate Setzen der Namen sparen. In jedem Fall kannst Du das Zimmer-Array schon anders initialisieren:
Java:
        Zimmer[] zi = { new Flur(), new Kueche(), new Badezimmer(), new Schlafzimmer(), new Arbeitszimmer(),
                new Wohnzimmer() };

Das switch-Statement in Zeilen 73-87 kannst Du abkürzen:
Java:
case "a":
case "b":
case "c":
case "d": 
    zimmer = auswahlWelchesZimmer.charAt(0) - 'a' + 1;
    break;

In Zeile 30 wirst Du übrigens eine ArrayIndexOutOfBoundsException erhalten, das aber nur nebenbei.

Zeilen 59 bis 62 könnte man in eine pressen.

Aber Achtung: nur weil man derlei Dinge machen kann, bedeutet das nicht, dass man das machen sollte. Das ist jetzt nur, damit Du Deine 10 Zeilen einsparst. Die Qualität des Codes ist nicht der Hit und wird durch diese Änderungen nicht unbedingt besser.
 
MoxxiManagarm

MoxxiManagarm

Top Contributor
Das kann eine Zeile sein:
        int zimmer;
        zimmer = 0;
Siehe Beitrag 4 von mihe7:
        Zimmer[] zi = new Zimmer[6];
        zi[0] = new Flur();
        zi[1] = new Kueche();
        zi[2] = new Badezimmer();
        zi[3] = new Schlafzimmer();
        zi[4] = new Arbeitszimmer();
        zi[5] = new Wohnzimmer();
Mit einem Konstruktor könntest du die Werte direkt beim Anlegen setzen:
        //Initialisierung der Objekte
        zi[0].setName("Flur");
        zi[1].setName("Kueche");
        zi[1].setHerd(false);
        zi[2].setName("Badezimmer");
        zi[2].setDusche(false);
        zi[3].setName("Schlafzimmer");
        zi[4].setName("Arbeitszimmer");
        zi[5].setName("Wohnzimmer");
        for (int i = 0; i <= zi.length; i++) {
            zi[i].setLicht(false);
        }
Sofern du nichts anderes definierst sind booleans ohnehin per default false:
        for (int i = 0; i <= zi.length; i++) {
            zi[i].setLicht(false);
        }
Könntest du in einer Schleife machen ('b' = 'a' + 1):
                    System.out.println("a) " + zi[1].getName());
                    System.out.println("b) " + zi[2].getName());
                    System.out.println("c) " + zi[3].getName());
                    System.out.println("d) " + zi[4].getName());
Wenn du das mit dem char vom Tipp davor verstanden hast kriegst du auch das einfacher hin:
switch (auswahlWelchesZimmer) {
                    case "a": zimmer = 1;
                    break;
                              
                    case "b": zimmer = 2;
                    break;
                              
                    case "c": zimmer = 3;
                    break;
                              
                    case "d": zimmer = 4;
                    break;
                          
                    default: System.out.println("ung�ltige Ausgabe!");
                    break;
                    }
Die Variable auswahlWelchesZimmer brauchst du nicht unbedingt, könntest scanner.next() im switchcase schreiben:
auswahlWelchesZimmer = scanner.next();
switch (auswahlWelchesZimmer) {
Auch inDerWohnung brauchst du nicht unbedingt. Du könntest while(true) verwenden und an der Stelle wo du false setzt mit einem break die Schleife verlassen:
boolean inDerWohnung = true;
while(inDerWohnung) {}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
S Hilfe : Unendlich viele Zufallszahlen erstellen? Java Basics - Anfänger-Themen 8
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
T Variablen Beliebig viele Arrays in Schleife erstellen Java Basics - Anfänger-Themen 1
M Aufgabe: Eine Klasse und viele Untermethoden Java Basics - Anfänger-Themen 30
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
D zu viele MySQL Connections Java Basics - Anfänger-Themen 18
F Threads ftp4j, viele Dateien upload Java Basics - Anfänger-Themen 5
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Beliebig viele Rechtecke erzeugen Java Basics - Anfänger-Themen 5
N Beliebig viele parameter Java Basics - Anfänger-Themen 3
D Viele grafische unterschiede von Windows xp zu Windows 7 Java Basics - Anfänger-Themen 3
T unterschiedlich viele parameter übergeben Java Basics - Anfänger-Themen 5
T Zu viele Fenster - HILFE! Java Basics - Anfänger-Themen 5
Prafy Beliebig viele Arrays erstellen? Java Basics - Anfänger-Themen 2
J Methoden Beliebig viele Objekt-Eingabeparameter im Konstruktor Java Basics - Anfänger-Themen 6
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
M Zu viele Verkettungen von Klassen Java Basics - Anfänger-Themen 4
G Erste Schritte Wie viele Montage gab es? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
El_Lobo Methoden Zu viele Getter- und Settermethoden - geht das einfacher? Java Basics - Anfänger-Themen 3
L buffered reader produziert zu viele und seltsame zeichen Java Basics - Anfänger-Themen 2
D Erste Schritte Viele Objekte einer Klasse "verwalten" Java Basics - Anfänger-Themen 17
T Beliebig viele Werte in Array zwischenspeichern Java Basics - Anfänger-Themen 15
S Viele Fragen von einem Anfänger in Java Java Basics - Anfänger-Themen 2
F Viele Controller-Klassen Java Basics - Anfänger-Themen 5
P Datentypen extrem viele Fehler nur irgendwie seh ich den Grund ned... Java Basics - Anfänger-Themen 3
M Viele GUI-Variablen Java Basics - Anfänger-Themen 4
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
U JTable viele möglichkeiten, keine Lösung Java Basics - Anfänger-Themen 5
H Reflexion: Eine Methode, beliebig viele Parameter (Java 1.4.2) Java Basics - Anfänger-Themen 8
M Viele verschachtelte Schleifen Java Basics - Anfänger-Themen 14
Avalarion Erschaffung eines Shadowrun Charaktergenerators - Viele, Viele Fragen! Java Basics - Anfänger-Themen 6
S Viele Konstanten, EnumSet? Java Basics - Anfänger-Themen 3
S Stilfrage: Neue Klasse wenn es in einer Klasse zu viele Methoden gibt? Java Basics - Anfänger-Themen 14
Kasu So viele "_ " ausgeben, wie ein String lang ist Java Basics - Anfänger-Themen 4
I viele Dateinamen in ein String-Array mit File().list() Java Basics - Anfänger-Themen 4
mwildam Textfile lesen und schreiben - so viele Möglichkeiten Java Basics - Anfänger-Themen 5
D Zu viele werte in einer klasse Java Basics - Anfänger-Themen 4
K Viele Fragen eines Anfängers-Fließkommazahlen/Typenwandlung Java Basics - Anfänger-Themen 5
W Viele Objekte mit einem Konstrukor erzeugen Java Basics - Anfänger-Themen 10
R einfaches Programm, viele Probleme Java Basics - Anfänger-Themen 29
G viele zahlen mit wenig code Java Basics - Anfänger-Themen 4
X 1 MySQL-Verbindung und viele Threads Java Basics - Anfänger-Themen 4
E Viele Fragen Java Basics - Anfänger-Themen 8
J viele Objekte erzeugen Java Basics - Anfänger-Themen 21
J Große *.Text Datei zum verschicken in viele kleine Java Basics - Anfänger-Themen 7
O viele Name mit jeweils zugehörigen Status in .txt Speichern Java Basics - Anfänger-Themen 16
K ResultSet: Wie viele Rows beinhaltet es? Java Basics - Anfänger-Themen 6
X Viele Komponenten automatisch erzeugen Java Basics - Anfänger-Themen 2
C zu viele paint()'s. Java Basics - Anfänger-Themen 6
M Viele Textfelder auslesen Java Basics - Anfänger-Themen 3
P x-viele Variablen anlegen Java Basics - Anfänger-Themen 2
F Mit der Zahl n n-viele Arrays erstellen ?! Java Basics - Anfänger-Themen 4
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
W Anzahl der Zeilen ausgeben lassen Java Basics - Anfänger-Themen 20
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
X Textdatei: zwei-zeilenweise gleiche Zeilen rausschmeißen Java Basics - Anfänger-Themen 21
A Jede x-te Zeile, lösche 10 Zeilen Java Basics - Anfänger-Themen 9
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
C Zeilen aus einer Datei in Array speichern Java Basics - Anfänger-Themen 4
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
A String mit mehreren Zeilen splitten Java Basics - Anfänger-Themen 4
S Java Text splitten mit Tabs, Zeilen, Zeichen und Klammern. Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
H Best Practice JavaFX TableView mit Zell-Rahmen anstelle von Zeilen-Balken Java Basics - Anfänger-Themen 1
V Ergebnisse in 2 Zeilen Java Basics - Anfänger-Themen 4
R Eine Datei mit mehreren Zeilen beschreiben Java Basics - Anfänger-Themen 5
C Zeilen in Array einlesen und splitten? Java Basics - Anfänger-Themen 17
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
T Exceptions - ausgeführte Zeilen Java Basics - Anfänger-Themen 4
M Input/Output Alle Zeilen auslesen und in Variable speichern Java Basics - Anfänger-Themen 5
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
J Zeilen aus einer .txt-Datei auslesen und Variablen zuweisen Java Basics - Anfänger-Themen 11
F Problem mit Tabulatoren bei Zeilen zählen einer Textdatei Java Basics - Anfänger-Themen 17
F Textdatei einlesen und Zeilen zählen Java Basics - Anfänger-Themen 10
M Array: Zeilen vergleichen Java Basics - Anfänger-Themen 4
J Klassen Hilfe bei unbekannten Zeilen bzgl. Klassen / Komponenten Java Basics - Anfänger-Themen 12
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
K Input/Output 6000 Zeilen einlesen und String-Array vergleichen? Java Basics - Anfänger-Themen 1
L String extrahieren mit Regular Expression über mehrere Zeilen hinweg Java Basics - Anfänger-Themen 1
T CSV auf Inhalt und Zeilen überprüfen Java Basics - Anfänger-Themen 2
I Datei mit 2 Spalten und millionen Zeilen Java Basics - Anfänger-Themen 19
kaoZ Input/Output Einlesen von mehreren Zeilen Java Basics - Anfänger-Themen 4
J Zeilen unsichtbar Java Basics - Anfänger-Themen 11
3 JLabel - Text in mehreren Zeilen zentrieren Java Basics - Anfänger-Themen 5
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23
V Methoden Zeilen nach bestimmtem Attribut sortieren Java Basics - Anfänger-Themen 4
M Einzelne Zeilen nach Zeichen auslesen Java Basics - Anfänger-Themen 4
T Methoden HILFE! readLine() liest nur ungerade Zeilen?? Java Basics - Anfänger-Themen 2
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
G 3422 Zeilen in Eclipse Console Java Basics - Anfänger-Themen 5
L Zeilen und Spalten sortieren Java Basics - Anfänger-Themen 11
K Erste Schritte Eingabetext besteht aus mehreren Zeilen? Java Basics - Anfänger-Themen 3
T BufferedReader mehrere Zeilen einlesen Java Basics - Anfänger-Themen 4
B Zählen bestimmter Zeilen einer .txt Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Anzeige

Neue Themen


Oben