Frage von snipesss, 35

Wieso kommt diese Fehlermeldung?

import static java.lang.System.*;
import java.util.Scanner;

public class Autheniticator2 {

public static void main(String[] args){
    Scanner keyboard = new Scanner(System.in);
    
    out.println("Benutzername:");
    String Benutzername = keyboard.next();
    
    if (Benutzername.equals("Stefan")) {
        out.println("Passwort:");
        keyboard.nextInt();
    }
    
    if (!Benutzername.equals("Stefan")) {
        out.println("Falscher Benutzername! Versuchen Sie er erneut!");
        keyboard.nextInt();
    }
    
}
    
    }

Als Fehlermeldung kommt das hier heraus:

Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at Autheniticator2.main(Autheniticator2.java:19)
Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von phigeek, 8

Du Schreibst "nextInt()". Dies erlaubt aber nur gerade die Eingabe von ganzen Zahlen (integer = ganz).

Gewöhne Dir auch folgendes ab:

if (Benutzername.equals("Stefan")) {

schreibe

if ("Stefan".equals(Benutzername)) {

Bei Vergleichen soll für die Stabilität der Software die Konstante immer nach links genommen werden!

Antwort
von Sharrky, 24
 keyboard.nextInt();

// benutze keyboard.next();
Antwort
von androhecker, 24

Diese Exception wird geworfen, wenn das Ergebnis nicht das ist, was es sein sollte.
Zum Beispiel nextInt und du gibst einen Namen ein.

Aber next ist nicht was du willst, das nimmt nur den nächsten Character, du brauchst nextLine.

Keine passende Antwort gefunden?

Fragen Sie die Community