Ich mache ein kleines Programm, wo der Benutzer wählt, welche Option möchte. Ich benutze switch, und alles funktioniert gut, aber jetzt versuche ich die Sprachauswahl zu verbessern, ich versuche dies mit Arrays zu erreichen (ich weiß nicht, wie ich es richtig erklären soll, aber es ist einfach zu siehe im Code).Code wird ohne falschen Grund ausgeführt
//Each menu option
static String[][] menuOptions =
{
{
"1. Check your grades",
"2. Check if you can examine for a driving license",
"3. Check if a number is odd or even",
"4. Check if a number is divisible by 7",
"5. Check if a triangle is equilater",
"6. Check who won",
"7. Check which number is bigger",
"8. Check if you can have a \"Carnet Jove\"",
"9. Convert numeric grades to letters",
"10. Exit Application"
},
{
"1. Comprobar si has aprobado",
"2. Check if you can examine for a driving license",
"3. Check if a number is odd or even",
"4. Check if a number is divisible by 7",
"5. Check if a triangle is equilater",
"6. Check who won",
"7. Check which number is bigger",
"8. Check if you can have a \"Carnet Jove\"",
"9. Convert numeric grades to letters",
"10. Exit Application"
}
};
//End of Options
static Scanner Scan = new Scanner(System.in);
static boolean correctInput = false;
static int language;
static int selection;
public static void main(String[] args)
{
System.out.println("\t1. English\t2. Español\n");
System.out.print("Select a Language:\tSeleccione un Idioma:\t");
language = Scan.nextInt();
System.out.print("");
while (correctInput != true)
{
menu(language);
try //Comprobamos que el usuario haya introducido un numero
{
selection = Integer.parseInt(Scan.nextLine());
} catch (NumberFormatException ex) //En caso de error lo gestionamos
{
//No hacemos nada
}
switch (selection)
{
case 1:
correctInput = true;
checkGrades();
break;
case 2:
correctInput = true;
chechDrivingLicense();
break;
case 3:
correctInput = true;
checkOddNum();
break;
case 4:
correctInput = true;
checkDivBy7();
break;
case 5:
correctInput = true;
checkEquilater();
break;
case 6:
correctInput = true;
checkWinner();
break;
case 7:
correctInput = true;
checkBigger();
break;
case 8:
correctInput = true;
checkCarnetJove();
break;
case 9:
correctInput = true;
convertNumGradeToLetter();
break;
case 10:
correctInput = true;
break;
default:
System.out.println("\n\n\n\nInput not valid. Please enter"
+ " a valid number\n");
}
}
}
private static void menu(int language)
{
System.out.println("\n");
int sel = 12;
for (String s : menuOptions[language - 1])
{
System.out.println("\t" + s);
}
System.out.print("\nSelect an option: \t");
}
Statt das gewählte Menü anzuzeigen (das jetzt nur eine Option hat übersetzt, aber es ist genug, um zu überprüfen, ob es funktioniert oder nicht), was passiert ist, dass, wenn das Menü angezeigt wird, wählt es automatisch eine Option (was immer ein ungültiger ist) und löst die Wiederholung des Menüs 1 mal aus. Es ist kein großes Ärgernis, aber ich möchte es beheben.
Hier ist ein, was die aktuelle Ausgabe wie folgt aussieht:
besten ... titel ... immer ... normalerweise wird es ausgeführt, weil Sie es ausführen :) versucht, einen anderen Wert im catch-Block zu setzen? – Stultuske
@Stultuske Ja, ich habe versucht, einen Wert für _selection_ im catch-Block zu setzen. Es hat die Ausgabe nicht geändert. –