Kontrollera om inmatningen är en int variabel.
Hej!
Jag har gjort en meny där användaren ska göra sitt val mellan 1-3. Jag har lagt till en else sats ifall användaren skulle skriva en annan siffra än just 1-3. Men jag vill undvika även error som uppstår OM användaren skulle skriva tex en bokstav eller sträng.
Jag har förstått att man ska använda antingen isNaN(värde) eller Number.IsNaN(värde) och att man då får ett booliskt värde som svar. Men oavsett hur jag skriver det i mitt program så får jag error meddelanden. Jag har googlat ihjäl mig vid det här laget och förstår verkligen inte vad jag gör fel.
Min kod:
while (aktivMeny)
{
System.out.println("Vilken svårighetsgrad?"); //Meny där användaren gör sitt val vilket spel hen vill spela.
System.out.println("1. Lätt (1-10)");
System.out.println("2. Mellan (1-100)");
System.out.println("3. Svårt (1-1000)");
int valSvårighetsgrad = sc.nextInt();
if (valSvårighetsgrad == 1) //Åtgärd efter användarens val från 1-3
{
int antalGissningar = playGame(10);
System.out.println("Du gjorde " + antalGissningar + " gissningar innan du fann talet.");
aktivMeny = false;
}
else if (valSvårighetsgrad == 2)
{
int antalGissningar = playGame(100);
System.out.println("Du gjorde " + antalGissningar + " gissningar innan du fann talet.");
aktivMeny = false;
}
else if (valSvårighetsgrad == 3)
{
int antalGissningar = playGame(1000);
System.out.println("Du gjorde " + antalGissningar + " gissningar innan du fann talet.");
aktivMeny = false;
}
else if(isNaN(valSvårighetsgrad)) //Fångar upp tillfällen då användaren väljer en annan siffra än 1-3
{
System.out.println("Ogiltigt val, försök igen.");
System.out.println();
}
}
nextInt kastar en exception (InputMismatchException) om strängen inte går att konvertera till en int.
Testa
boolean done = false
do {
try {
// Läs in och konvertera till int
done = true;
} catch () {
// Felhantera eller gör inget. KOden i try.. repeteras
}
} while (!done)
Söker du svar på språkrelaterade frågor så kan följande länk va ett bra alternativ. Jag använder den ofta.
Lycka till