Fehler bei String eingabe via Scanner



  • Hallo,

    vl. könnt ihr mir weiterhelfen. In Folgender Methode soll ich einen neuen Artikel anlegen. Das Funktioniert soweit auch einwandfrei.
    Aber nur wenn ich bei "Artikelbeschreibung" einen zusammenhängenden String eingebe.(Zeile 17/18) Also z.B. "Auto". Gebe ich aber z.B. "BMW 530i" ein kommt folgende Fehlermeldung.

    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.nextDouble(Unknown Source)
    at Main.Konsoleneingabe(Main.java:153)
    at Main.main(Main.java:58)

    Ich bin neu in Java und weiss (noch) nicht was diese Fehlermeldung bedeutet

    hier mein code

    public static void Konsoleneingabe(List<Artikel> lst) {
    
    		int eingabe = 0;
    		List<Artikel> lstArtikel = new ArrayList<Artikel>();
    
    		do {
    
    			Artikel art = new Artikel();
    			Farbe fa = new Farbe();
    
    			Scanner sca = new Scanner(System.in);
    
    			System.out.print("Geben Sie eine Artikelnummer ein: ");
    			art.setArtNr(sca.nextInt());
    
    			System.out.println("Artikelbeschreibung eingeben");
    			art.setDescription(sca.next());
    
    			System.out.println("Artikelpreis eingeben: ");
    			art.setWert(sca.nextDouble());
    
    			System.out.println("Währung eingeben: ");
    			art.setWährung(sca.next());
    
    			System.out.println("Farbanteil Rot eingeben: ");
    			fa.setRot(sca.nextInt());
    
    			System.out.println("Farbanteil Blau eingeben: ");
    			fa.setBlau(sca.nextInt());
    
    			System.out.println("Farbanteil Grün eingeben: ");
    			fa.setGrün(sca.nextInt());
    
    			art.setFarbe(fa);
    			lst.add(art);
    
    			System.out.println("Wollen Sie noch einen Artikel eingeben? (JA=1, NEIN=0)");
    			Scanner sc = new Scanner(System.in);
    
    			eingabe = sc.nextInt();
    
    			if (eingabe == 0) {
    
    				for (Artikel current : lst) {
    
    					System.out.println("ArtNr: " + current.getArtNr());
    					System.out.println("Beschreibung: "+ current.getDescription());
    					System.out.println("Preis: " + current.getWert() + " "+ current.getWährung());
    					System.out.println("Farbe: " + current.getFarbe().getRot()+ " " + current.getFarbe().getBlau() + " "+ current.getFarbe().getGrün());
    					System.out.println();
    				}
    			}
    
    		} while (eingabe == 1);
    	}
    

    Danke



  • Scanner.next() liest nur bis zum nächsten Trennzeichen (whitespace) ein und der nächste Lesevorgang versucht ein Double-Wert einzulesen (und erkennt bei "530i" das ungültige Zeichen 'i').
    Stattdessen solltest du "nextLine()" verwenden.



  • habe ich auch schon versucht, bekomme aber die selbe Exception


Log in to reply