Hallo liebe Community,
ich hab mir mal nach und nach ein Programm zusammen gebaut und habe mich an „alte“ c Zeiten erinnert, als es noch tolle Menüs mit Switch-Anweisungen gab.
Nun habe ich nen doch etwas größeres Java Programm geschrieben und möcht es mit so einem super tollem Menü hinterlegen. War bis zum heutigen Tag eigentlich auch nie ein Problem solche Menüs zusammen zu basteln.
Aber heute zweifel ich an mir.
Ok also den Char für das Menü definiere so.
so sieht meine main aus
und das ist mein Eingabemenü in dem ich folgendes Problem habe.
In der 1ten Switch Anweisung wartet er am System.in.read() auf eine Eingabe, so sollt es auch sein, nach der Eingabe des Char springt er in die Case Anweisung, in dem ein weiterer Switch steck. Das Problem ist, er überspringt die System.in.read(), erkennt logischerweise den Buchstaben nicht als richtig und springt ins default.
Hab ergänzend noch eine Frage da meine Erinnerungen doch sehr lückenhaft sind, man sagt auch Kopf wie ein Sieb ;P
Wie schaffe realisiere ich es das ich den Character nicht mit [Eingabe] bestätigen muss, sondern das er den gedrückten Buchstaben direkt als Einnahme übernimmt
Danke liebe Community
ich hab mir mal nach und nach ein Programm zusammen gebaut und habe mich an „alte“ c Zeiten erinnert, als es noch tolle Menüs mit Switch-Anweisungen gab.
Nun habe ich nen doch etwas größeres Java Programm geschrieben und möcht es mit so einem super tollem Menü hinterlegen. War bis zum heutigen Tag eigentlich auch nie ein Problem solche Menüs zusammen zu basteln.
Aber heute zweifel ich an mir.
Ok also den Char für das Menü definiere so.
Code:
static char menuC=' ';
so sieht meine main aus
Code:
public static void main(String[] args) {
// Deklarierung des Log Dateinamens ("Dateiname")
protokoll.logger_einschalten(logpfad);
protokoll.logger.debug("[Start]>");
eingabeMenu();
protokoll.logger.debug("<[Ende]");
}
und das ist mein Eingabemenü in dem ich folgendes Problem habe.
In der 1ten Switch Anweisung wartet er am System.in.read() auf eine Eingabe, so sollt es auch sein, nach der Eingabe des Char springt er in die Case Anweisung, in dem ein weiterer Switch steck. Das Problem ist, er überspringt die System.in.read(), erkennt logischerweise den Buchstaben nicht als richtig und springt ins default.
Code:
public static void eingabeMenu()
{
BufferedReader in = new BufferedReader(
new InputStreamReader(System.in));
//Runtime.getRuntime().exec("cls");
System.out.println ("Menü");
System.out.println ("P - Personal");
System.out.println ("U - Übersicht");
System.out.println ("L - Log");
System.out.println ("B - Beenden");
System.out.print ("Bitte wählen Sie:\t");
try {
menuC =(char) in.read();
menuC=Character.toUpperCase(menuC);
}
catch (IOException e) {protokoll.logger.debug(e);}
switch (menuC)
{
case 'P': {
System.out.println ("Personal");
System.out.println ("E - Erstellen");
System.out.println ("A - Anzeigen");
System.out.println ("L - Löschen");
System.out.println ("B - Beenden");
System.out.print ("Bitte wählen Sie:\t");
try {
menuC =(char) in.read();
menuC=Character.toUpperCase(menuC);
}
catch (IOException e) {protokoll.logger.debug(e);}
switch (menuC)
{
case 'E':
{
eingabePersonal();
Textdatei_Schreiben(pfad);
}break;
case 'A':
{
Textdatei_auslesen(pfad);
}break;
case 'L':
{
System.out.println("Noch nicht Implementiert");
}break;
case 'B':
{
eingabeMenu();
}break;
default :
{
System.out.println("Ungültige Eingabe - Hauptmenü");
eingabeMenu();
}
}
}break;
case 'U': {
System.out.println ("Übersicht");
System.out.println ("P - Personal Anzeigen");
System.out.println ("L - Log Anzeigen");
System.out.println ("B - Beenden");
System.out.print ("Bitte wählen Sie:\t");
try {
menuC =(char) in.read();
menuC=Character.toUpperCase(menuC);
}
catch (IOException e) {protokoll.logger.debug(e);}
switch (menuC)
{
case 'P':
{
Textdatei_auslesen(pfad);
}break;
case 'L':
{
Textdatei_auslesen(logpfad);
}break;
case 'B':
{
eingabeMenu();
}break;
default :
{
System.out.println("Ungültige Eingabe - Hauptmenü");
eingabeMenu();
}
}
}break;
case 'L': {
System.out.println ("Log");
System.out.println ("A - Log Anzeigen");
System.out.println ("L - Log Löschen");
System.out.println ("B - Beenden");
System.out.print ("Bitte wählen Sie:\t");
try {
menuC =(char) in.read();
menuC=Character.toUpperCase(menuC);
}
catch (IOException e) {protokoll.logger.debug(e);}
switch (menuC)
{
case 'A':
{
Textdatei_auslesen(logpfad);
}break;
case 'L':
{
Datei_loeschen(pfad);
}break;
case 'B':
{
eingabeMenu();
}break;
default :
{
System.out.println("Ungültige Eingabe - Hauptmenü");
eingabeMenu();
}
}
}break;
case 'B': {
System.out.println("Noch nicht Implementiert");
}break;
default : {
System.out.println("Ungültige Eingabe - Hauptmenü");
eingabeMenu();
}
}
}
Hab ergänzend noch eine Frage da meine Erinnerungen doch sehr lückenhaft sind, man sagt auch Kopf wie ein Sieb ;P
Wie schaffe realisiere ich es das ich den Character nicht mit [Eingabe] bestätigen muss, sondern das er den gedrückten Buchstaben direkt als Einnahme übernimmt
Danke liebe Community