Java Menü einbinden - Nur wie?

Dante2000

Commander
Registriert
Apr. 2011
Beiträge
2.655
Hallo Community,

ich arbeite momentan an ein Programm in Java, das für die Verwaltung von CDs und DVDs zuständig sein soll. Soweit läuft alles, nur habe ich scheinbar ein Blackout bezüglich des Menüs:

Zum Problem: Ich möchte, sobald man ein "n" oder "N" eingibt, das man wieder zurück zur DVD Verwaltung kommt. Leider weis ich nicht, wie ich das anstellen soll.

Das Hauptprogramm
PHP:
public class CDDVDHauptmenue
{
  // Start des Hauptprogramms
  public static void main(String[] args)
  {
   int mwahl, i=0;
   final int ANZ=2;
   char abfrage=0;
   String dvd_title[] = new String [ANZ];
   String regisseur[] = new String [ANZ];
   String producer[] = new String [ANZ];
   String release[] = new String [ANZ];

   System.out.println("\nWillkommen in der CD-/DVD Verwaltung");
   System.out.println("\nBitte wählen Sie eine der folgenden Optionen aus: ");
   System.out.println("[1] Zur CD Verwaltung");
   System.out.println("[2] Zur DVD Verwaltung");
   System.out.println("[3] Programm Schließen");
   mwahl= Tastatur.liesInt();
     switch (mwahl)
     {
...
       case 2:
         CDDVDHauptmenue.dvdmenue(i,ANZ,mwahl,abfrage,dvd_title,regisseur,producer,release);
       break;
...
     }
  }

Das Unterprogramm:
PHP:
 // DVD Hauptmenue
  public static void dvdmenue (int i,int ANZ,int mwahl,char abfrage,String dvd_title[],String regisseur[],String producer[],String release[])
  {
    System.out.println("\nWilkommen in der DVD Verwaltung"); //Hierhin soll es nach der "n" oder "N" Abfrage gehen
    System.out.println("\nBitte wählen Sie eine der folgenden Optionen aus: ");
    System.out.println("[1]  DVDs hinzufügen");
    System.out.println("[2]  Einzelne Neue DVD hinzufügen");
    System.out.println("[3]  DVDs Editieren/Bearbeiten");
    System.out.println("[4]  Hinzugefügte DVDs anzeigen");
    System.out.println("[5]  Suche nach DVD Nummer");
    System.out.println("[6]  Suche nach DVD Titel");
    System.out.println("[7]  DVD-Verzeichnis anzeigen");
    System.out.println("[8]  Zur Hauptauswahl zurückkehren");
    System.out.println("[9]  Eingegbene Daten speichern");
    System.out.println("[10] Programm Beenden");
    mwahl= Tastatur.liesInt();
    switch (mwahl)
    {
      case 1:
        if (ANZ<=500)
        {
            System.out.println("|------------------------------------------------------------------------------|");
            System.out.println("|                          Bitte geben Sie ihre DVD-Daten ein                  |");
            System.out.println("|                Bitte beachten: Die maximale Anzahl an DVDs beträgt 500       |");
            System.out.println("|------------------------------------------------------------------------------|");
           for (i=0;i<ANZ;i++)
           {
              System.out.println("\nDVD ID: "+(i+1));
              System.out.println("Bitte geben Sie den DVD-Titel ein:");
              dvd_title[i]= Tastatur.liesString();
              System.out.println("\nBitte Regisseur eingeben:");
              regisseur[i]= Tastatur.liesString();
              System.out.println("\nBitte Produktionsfirma eingeben:");
              producer[i]= Tastatur.liesString();
              System.out.println("\nBitte Releasedatum eingeben:");
              release[i]= Tastatur.liesString();
              System.out.println("\nWeitere DVD Hinzufügen? Ja [J] oder Nein [N]?");
              abfrage=Tastatur.liesChar();
              switch (abfrage)
              {
                case 'N':
                  System.out.println("\nDVD Eingabe Beendet"); //was fehlt mir, damit ich wieder zurück zum DVD Menü komme? Brauche ich eine Schleife?
                break;

                case 'n':
                  System.out.println("\nDVD Eingabe Beendet");
                break;

//                  default:
//                    System.out.println("Fehleingabe bitte Eingabe wiederholen!");
//                return abfrage;
              }
           }
        }
      break;
    }

Ich hoffe ihr könnt mir helfen. :)

EDIT: Zudem möchte ich, das wenn etwas anderes als "J","j" oder "N","n" eingegeben wird, man per default:
Zur nochmaligen Eingabe aufgefordert wird, und es erst nach einer korrekten Eingabe weitergeht.
 
Zuletzt bearbeitet:
So wie ich das sehe, musst du doch einfach nur die Funktion des DVD Menues aufrufen.
Genau wie du es an dieser stelle auch gemacht hast:

case 2:
CDDVDHauptmenue.dvdmenue(i,ANZ,mwahl,abfrage,dvd_title,regisseur,producer,release);
break;
 
DVD Hauptverwaltung in eine Schleife? Oder meinst du was anderes?
 
Danke, ich wusste doch, das ich das schonmal hinbekommen habe. Kannst du mir vll auch noch meine 2te Frage beantworten?

Zudem möchte ich, das wenn etwas anderes als "J","j" oder "N","n" eingegeben wird, man per default:
Zur nochmaligen Eingabe aufgefordert wird, und es erst nach einer korrekten Eingabe weitergeht.

Auf jeden Fall danke für die Hilfe.
 
Da solltest du evtl die ganze abfrage, also das hier:
switch (abfrage)
{
case 'N':
System.out.println("\nDVD Eingabe Beendet"); //was fehlt mir, damit ich wieder zurück zum DVD Menü komme? Brauche ich eine Schleife?
break;

case 'n':
System.out.println("\nDVD Eingabe Beendet");
break;

// default:
// System.out.println("Fehleingabe bitte Eingabe wiederholen!");
// return abfrage;
}

in eine eigene funktion verpacken. und nennst sie dann z.b. abfrageMenue und diese ruft sich im default fall einfach selbst nochmal auf. dann erscheint das menue nochmal.
 
Dann solltest du (gemäß dem Sinn von Objektorientierung) das ganze in eine Klasse packen die das ganze steuert. Dann kannst du entsprechend auch das Menü wieder aufrufen.

Zurück zum Beginn von main() kommst du so nicht.
 
Danke für eure Antworten! Ich werde das morgen testen und melde mich dann nochmal :)
Ergänzung ()

Hi,

ich habe wieder ein Problem:

Ich habe jetzt eine Methode mit dem Namen abfragemenue erstellt. Dort hinein habe ich folgendes gepackt:

PHP:
 public static void abfragemenue (int i,int ANZ,int mwahl,int dvdsearchNr,char abfrage,String dvd_title[],String regisseur[],String producer[],String release[])
 {
    switch (abfrage)
   {
      case 'J':
      break;
      
      case 'j':
      break;

      case 'N':
        System.out.println("\nEingabe der DVDs beendet");
        DVDMenue.dvdmenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);
      break;

      case 'n':
        System.out.println("\bEingabe der DVDs beendet");
        DVDMenue.dvdmenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);
      break;

      default:
        DVDMenue.abfragemenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);
    }
 }

Sobald ich etwas anderes eingebe, also eine Fehleingabe mache, stürtzt das Programm ab. Dort steht immer, das ein Fehler in der Zeile 26 (DVDMenue.abfragemenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);) vorliegt.

Was muss ich ändern, damit es klappt?

EDIT: Habe die Lösung gefunden! War ein Logikfehler...
 
Zuletzt bearbeitet:
Auch wenns trivial ist, wenn sich jemand den Thread durchliest freut er sich wenn du die Lösung auch nochmal kurz mitteilst ;)
 
Klar, habe ich vergessen. :)

Hole ich hiermit nach:

Mein Fehler war es, das ich die:
PHP:
abfrage=Tastatur.liesChar();
Nicht mit in die Methode eingebunden habe. So funktioniert das ganze jetzt endlich:
PHP:
 public static void dvdabfrage (int i,int ANZ,int mwahl,int dvdsearchNr,String dvd_title[],String regisseur[],String producer[],String release[])
 {
    char abfrage;
    abfrage=Tastatur.liesChar();
    switch (abfrage)
   {
      case 'J':
      break;
      
      case 'j':
      break;

      case 'N':
        System.out.println("\nEingabe der DVDs beendet");
        DVDMenue.dvdmenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);
      break;

      case 'n':
        System.out.println("\bEingabe der DVDs beendet");
        DVDMenue.dvdmenue(i,ANZ,mwahl,dvdsearchNr,abfrage,dvd_title,regisseur,producer,release);
      break;

      default:
        System.out.println("\nFehler - Bitte Eingabe wiederholen");
        DVDMenue.dvdabfrage(i,ANZ,mwahl,dvdsearchNr,dvd_title,regisseur,producer,release);
      break;
    }
 }

Ich glaube das noch weitere Fragen kommen werden, bezüglich der Funktion Bobblesort und der Festplattenspeicherung.
 
Zurück
Oben