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