Erste Schritte Programm geht aus Schleife, warum?

Diskutiere Programm geht aus Schleife, warum? im Java Basics - Anfänger-Themen Bereich.
K

killermuck

Hallo Zusammen,

ich bin neu hier und hoffe ich mache das alles korrekt! ;-)

Jetzt zu meiner Frage:

Ich habe folgenden Code erstellt:

Javascript:
/*########################################################
 * Einsendeaufgabe 4
 * #####################################################*/
package einsendeaufgabe_4;
//für das Einlesen
import javax.swing.*;
//für die Sonderfunktionen der Arrays
import java.util.Arrays;

public class Einsendeaufgabe_4 {
    static boolean weiter = true; //Klassenvariable "weiter", damit diese in jeder Methode verwendet werden kann
    static boolean neueKisteBeenden = false; //Flag-Variable für Endlosschleife
    static int i = 1000000; //Klassenvariable für Endlosschleife um main() am Laufen zu halten
    
    //Methode1 - neue Kiste erfassen
    static void neueKiste(int[][] argneueKiste) {
        int kistenNummer, länge = 0, breite = 0, höhe = 0; // Varibalen für die Eingabedialoge zur Übergabe an das Array
        String nKisteEinlesen = null; //String-Variable für den Eingabedialog
        char nKistefunktionWahl; //charVariable um nur das erste Zeichen der Eingabe zu verwenden
            
        
        do { //bewusste Endlosschleife, da das Programm laufen muss, damit die Werte der Variablen nicht verloren gehen!!!!
        //neue Kiste eingeben
            do {
            kistenNummer = Integer.parseInt(JOptionPane.showInputDialog("Bitte die Nummer der neuen Kiste eingeben"));
            //Prüfung, ob die Kiste schon vorhanden ist, wenn nein, dann Daten eingeben
                if (argneueKiste[kistenNummer-1][0] == 0) {
                
                //kistenNummer vergeben
                argneueKiste[kistenNummer-1][0]=kistenNummer;
                
                if (argneueKiste[kistenNummer-1][0] > 0) {
                //Werte für länge, breite und höhe einlesen und dem Array zuweisen
                länge = Integer.parseInt(JOptionPane.showInputDialog("Kistenlänge"));
                argneueKiste[kistenNummer-1][1]=länge;
                
                breite = Integer.parseInt(JOptionPane.showInputDialog("Kistenbreite"));
                argneueKiste[kistenNummer-1][2]=breite;
                
                höhe = Integer.parseInt(JOptionPane.showInputDialog("Kistenhöhe"));
                argneueKiste[kistenNummer-1][3]=höhe;
                
                System.out.println("Kistennr:\t" + "Länge\t" + "Breite\t" + "Höhe");
                System.out.println(kistenNummer + "\t\t" + länge + "\t" + breite + "\t" + höhe);
            }
            
                else {
                System.out.println("Kistennummer ist bereits vergeben.");
                System.out.println("Kistennummer ist ungültig.");
                }
            }
        }
        while(kistenNummer <= 0 || kistenNummer>argneueKiste.length);
        
        //Eingabedialog switch/case weitere Kiste erfassen J/N
        nKisteEinlesen = JOptionPane.showInputDialog("Möchten Sie eine weitere Kiste erfassen: \n1 = Ja \n2 = Nein");
        // nur das erste Zeichen nehmen
        nKistefunktionWahl = nKisteEinlesen.charAt(0);
        //die Auswertung von funktionWahl
        switch (nKistefunktionWahl) {
        //der case-Zweig für 1
        case '1':
            //Auswahl Ja wurde getroffen
            neueKisteBeenden = false;
            break;
            //der case-Zweig für 2
        case '2':
            //Auswahl Nein wurde getroffen
            neueKisteBeenden = true;
            break;
        default:
            System.out.println("Das Programm wurde beendet!");
        }   
            }
        while(neueKisteBeenden == false);
        
        System.exit(0);
        
        }
            
    //Methode2 - Kiste löschen
    static void kisteLöschen(int[][] argArray) {
        
    }
        
    //Methode3 - Kiste ändern
    static void kisteÄndern(int[] argArray) {
        
    }
    
    //Methode4 - Kiste suchen
    static void kisteSuchen(int[] argArray) {
    
    }
        
    //Methode5 - Kiste löschen
    static void kisteListe(int[] argArray) {
        
    }
    
    

    public static void main(String[] args) {
        int [][] aKistenArray = new int [4][75]; //Zweidimensionaler Array 4 Spalten / 75 Zeilen
        String funktionEinlesen = null; //String-Variable für den Eingabedialog
        char funktionWahl; //charVariable um nur das erste Zeichen der Eingabe zu verwenden
        
        for (i = 1000000; i > 0; i--) { //bewusste Endlosschleife, da das Programm laufen muss, damit die Werte der Variablen nicht verloren gehen!!!!

        //Eingabe der gewünschten Funktion
        funktionEinlesen = JOptionPane.showInputDialog("Bitte wählen Sie die gewüschte Funktion aus: \n1 = neue Kiste erfassen \n2 = Kiste löschen \n3 = Kiste ändern \n4 = Kiste suchen und Wete anzeigen \n5 = Kisten in einer Liste anzeigen \n6 = Programm beenden");
        // nur das erste Zeichen nehmen
        funktionWahl = funktionEinlesen.charAt(0);
        //die Auswertung von funktionWahl
        switch (funktionWahl) {
        //der case-Zweig für 1
        case '1':
            //Methode1 - Kiste neu eingeben
            neueKiste(aKistenArray);
            break;
            //der case-Zweig für 2
        case '2':
            //Methode2 - Kiste löschen
            System.out.println("Sie haben die Auswahl: " + funktionEinlesen + "getroffen.");
            //löschenKiste (kistenArray);
            break;
            //der case-Zweig für 3
        case '3':
            //Methode3 - Kiste ändern
            System.out.println("Sie haben die Auswahl: " + funktionEinlesen + "getroffen.");
            //ändernKiste (kistenArray);
            break;
            //der case-Zweig für 4
        case '4':
            //Methode4 - Kiste suchen und Werte anzeigen
            System.out.println("Sie haben die Auswahl: " + funktionEinlesen + "getroffen.");
            //suchenKiste (kistenArray);
            break;
            //der case-Zweig für 5
        case '5':
            //Methode5 - Kisten in einer Liste anzeigen
            System.out.println("Sie haben die Auswahl: " + funktionEinlesen + "getroffen.");
            //listeKiste (kistenArray);
            break;
        case '6':
            //Programm beenden?
            i = 0;
            break;   
        //für alle anderen Eingaben
        default:
            System.out.println("Sie haben keine gültige Auswahl getroffen!");
        } //hier endet die Auswertung von funktionWahl

        System.exit(0);
        }

    }
}
unter main() läuft das Hauptmenü mit 6 Auswahlpunkten, die über switch... case in die jeweilige Methode springen.
Das Hauptmenü soll durch eine Endlosschleife am laufen gehalten werden, damit die Werte der Variablen nicht verloren gehen.
Deshalb habe ich die Klassenvariable i auf 1000000 gesetzt, diese sollte ja im gesamten Programm bekannt sein.
Ich wähle also Menüpunkt 1 für neue Kiste erfassen und erfasse meine Kiste, danach kommt dann die Abfrage, ob ich eine
weitere Kiste erfassen will? Wenn ich mit "Ja" antworte funktioniert noch alles. Bei "Nein" müsste er doch meines Erachtens wieder in main ()
unter case 1: an dem Punkt weitermachen, an dem in die Methode gesprungen wurde.

Wie bekomme ich es hin, das er nach dem Verlassen der Methode wieder in das Hauptmenü springt?

Habe schon verschiedenste Varianten mit if / for / do... while und auch mit lokeln Variablen versucht. Nichts hat funktioniert!

Habt Ihr nen Tipp wie ich das hinbekomme?

Vielen Dank im Voraus.

Gruß
Lars
 
K

killermuck

Danke für die super schnelle Hilfe. Hat bestens funktioniert!👍
 
Thema: 

Programm geht aus Schleife, warum?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben