Eingabe Kommazahlen über Scanner

Nico-21827

Neues Mitglied
Hallo zusammen

ich habe folgendes Problem:

Ich muss für die Schule bis Donnerstag ein Projekt geschrieben haben und habe momentan noch ein paar "Problemchen"

Code Klasse:
Java:
package com.mycompany.einrad;

import java.util.Scanner;
import java.math.*;

public class Einrad {
    Scanner scanner=new Scanner(System.in);
    
    //private Variablen
    private int speichenzahl;
    private boolean fahrfaehig;
    String treterform;
    
    //public Variablen
    public double luftdruck, sitzhoehe;
    
    //Konstruktor Einrad
    public Einrad(double sitzhoehe, int speichenzahl, boolean fahrfaehig, double luftdruck){
        this.speichenzahl=speichenzahl;
        this.fahrfaehig=fahrfaehig;
        this.luftdruck=luftdruck;
        this.sitzhoehe=sitzhoehe;
    }
    
            //Setter Methoden

        public void setFahrfaehig(double luftdruck){
        
            if(this.luftdruck>=1 && this.luftdruck<=3){
                this.fahrfaehig=true;
            }
            else{
                this.fahrfaehig=false;
            }       
        }
        
        public void setLuftdruck(double luftdruck){
        System.out.println("Wieviel Luftdruck ist noch im Reifen?");
        this.luftdruck = scanner.nextDouble();
        }
        
        public void setTreterform(String treterform){
        System.out.println("Welche Form haben die Treter (gerade, schief): ");
        this.treterform = scanner.nextLine();
        }
                
        //Getter Methoden
        public void setSitzhoehe(double sitzhoehe){
        System.out.println("Wie hoch ist das Einrad?");
        this.sitzhoehe = scanner.nextDouble();
        }
        
        public void getSitzhoehe(){
        System.out.println("Die Sitzhoehe beträgt: " +this.sitzhoehe +" cm");
        }
        
        public boolean getFahrfaehig(){
            return this.fahrfaehig;
        }
         
        public String getLuftdruck(){
            return "Der Luftdruck im Reifen ist: " +this.luftdruck + " bar. Und gerundet bei: " +Math.round(this.luftdruck) + " bar";
        }
    
        public void getTreterform(){
            System.out.println("Das Einrad hat die Treterform " +this.treterform);
        }
}


Code Main:
Java:
package com.mycompany.einrad;

import java.util.Scanner;
import java.math.*;

public class Main {
    
    public static void main(String[] args){
        
        //Objekterzeugung NR1
        Einrad Eins = new Einrad(0, 0, true, 0);
        
        Eins.setSitzhoehe(Eins.sitzhoehe);
        [B][I]Eins.getSitzhoehe();[/I][/B]
        
        //Methodenaufruf Setter und Getter Methoden
        Eins.setLuftdruck(Eins.luftdruck);
        [I][B]Eins.getLuftdruck();[/B][/I]
        
        Eins.setTreterform(Eins.treterform);
        Eins.getTreterform();
        
        //Methodenaufruf mit Ausgabe
        System.out.println("Ist das Einrad fahrfähig: " +Eins.getFahrfaehig());      
     }
    
    
}
Wenn ich bei den markierten Stellen eine Kommazahl eingeben will, spuckt mir die Konsole eine Fehlermeldung aus.

Code:
Fehlermeldung: 
Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
    at com.mycompany.einrad.Einrad.setLuftdruck(Einrad.java:41)
    at com.mycompany.einrad.Main.main(Main.java:42)
Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
    at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
    at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:764)
    at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:711)
    at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:289)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 06:03 min
Finished at: 2019-12-02T14:02:49+01:00
Final Memory: 7M/27M
------------------------------------------------------------------------
Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:exec (default-cli) on project Einrad: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] [URL]http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException[/URL]
Check Maven network proxy...
 
Zuletzt bearbeitet von einem Moderator:

MoxxiManagarm

Top Contributor
Wenn ich bei den markierten Stellen eine Kommazahl eingeben will, spuckt mir die Konsole eine Fehlermeldung aus.

Fehlermeldung:
Exception in thread "main" java.util.InputMismatchException

Lies mal den Bereich "Localized Numbers" hier: https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Scanner.html

Das Problem liegt sicher an den Dezimal- und Tausendertrennzeichen, die in anderen Localen durchaus anders sind.
Bei den Engländern z.B. ist . das Dezimaltrennzeichen und , das Tausendertrennzeichen

Du kannst mit Scanner::useLocale(locale) die Locale umstellen, siehe: https://docs.oracle.com/en/java/jav...util/Scanner.html#useLocale(java.util.Locale)
 

M.L.

Top Contributor
Der Hinweis mit Locale scheint zu passen, Beispielausgabe mit Eclipse (ohne Mojo/...-Plugins) (allerdings sollte man den Benutzer vorher auf gültige Eingabewerte hinweisen und diese im Programmfluss entsprechend würdigen):
Wie hoch ist das Einrad?
123,6
Die Sitzhoehe beträgt: 123.6 cm
Wieviel Luftdruck ist noch im Reifen?
23,6
Welche Form haben die Treter (gerade, schief):
Das Einrad hat die Treterform
Ist das Einrad fahrfähig: true
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
S Eingabe in anderer Klasse verwenden Java Basics - Anfänger-Themen 3
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
R Ratespiel mit Return und einer Eingabe Java Basics - Anfänger-Themen 1
K Eingabe in Array speichern und Ausgeben Java Basics - Anfänger-Themen 9
J Eingabe des Scanners an einer bestimmten Position Java Basics - Anfänger-Themen 6
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
S Eingabe auf Richtigkeit und Reihenfolg überprüfen Java Basics - Anfänger-Themen 3
R Java CMD Eingabe verbergen Java Basics - Anfänger-Themen 4
L Eingabe überprüfen Java Basics - Anfänger-Themen 7
M Eingabe des Benutzers Verwenden Java Basics - Anfänger-Themen 9
T Input/Output Int Eingabe auf Zahl überprüfen Java Basics - Anfänger-Themen 30
S Method mit Eingabe abrufen Java Basics - Anfänger-Themen 1
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
K Überprüfen ob Eingabe ein Float ist Java Basics - Anfänger-Themen 4
G Warum funktioniert das Programm für negative Eingabe nicht? Java Basics - Anfänger-Themen 3
O Erste Schritte Eingabe anweisungen eliminieren Java Basics - Anfänger-Themen 3
G Objekt Instanziierung von Eingabe abhängig machen Java Basics - Anfänger-Themen 5
E Wie Passwort-Eingabe (ohne Echo!) über Konsole ? Java Basics - Anfänger-Themen 4
B Interface JTextField Eingabe als String verwenden Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
H Alternative Eingabe Java Basics - Anfänger-Themen 3
L Bei falscher Eingabe soll NaN zurückgegeben werden, Rückgabetyp jedoch double Java Basics - Anfänger-Themen 3
J Methoden Eingabe Methode nur Buchstaben Java Basics - Anfänger-Themen 4
F Die Teilersumme einer Eingabe berechnen Java Basics - Anfänger-Themen 11
H Leere Eingabe in einem array Java Basics - Anfänger-Themen 11
K Input/Output Nullstring als Eingabe Java Basics - Anfänger-Themen 4
M Eingabe im Terminal nicht möglich Java Basics - Anfänger-Themen 20
D Anzahl von Zahlen bei eingabe begrenzen Java Basics - Anfänger-Themen 37
T Input/Output Double und String als Eingabe einlesen Java Basics - Anfänger-Themen 9
N Error bei eingabe eines Punktes Java Basics - Anfänger-Themen 1
M Messandwendung nach Zeit und eigener Eingabe Java Basics - Anfänger-Themen 4
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
V char Eingabe aber nur für Buchstaben Java Basics - Anfänger-Themen 4
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1
S Input/Output Buchstaben in Eingabe finden und ausgeben Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben