Usereingabe in der gleichen Zeile ausgeben

Glühlampe

Mitglied
Hallo,

ich kenne mich noch nicht wirklich gut mit Java aus, aber mich wurmt es grade das ich eine Aufgabe meines Lehreres nicht lösen kann.
In der Console soll vollgenenes ausgegeben werden: "Geben sie die gewuenschte Menge ein:"
Nach dem : soll der user aufgefordert werden eine zahl einzugeben. Das schaffe ich auch nur in der Lösung meines Lehreres steht die usereingabe genau neben dem : und nicht in der darauffolgenden Zeile.
Java:
 String auswahlInput;
    int auswahl;
    
    String mengeInput;
    int menge;
    
    
    
    double wasserPreis = 0.5;
    int limonadePreis = 1;
    int bierPreis = 2;
    
    System.out.println("Getrauenke Automat v0.3");
    
    System.out.println("");
    
    System.out.println("Waehlen sie ihr Getraenk aus:");
    System.out.println("1) Wasser   (0,50 Euro");
    System.out.println("2) Limonade (1,00 Euro");
    System.out.println("3) Bier     (2,00 Euro)");
    System.out.println("");
    System.out.println("Geben sie 1, 2 oder 3: ");
    auswahlInput = System.console().readLine();
    auswahl = Integer.parseInt(auswahlInput);
    System.out.println("");
    System.out.println("Geben sie die gewuenschte Menge ein: ");
    mengeInput = System.console().readLine();

Bei diesem Code wird jedoch die usereingabe nicht neben dem Doppelpunkt eingetragen, wie bekomme ich das hin ?
 
Java:
String auswahlInput;
    int auswahl;
    
    String mengeInput;
    int menge;
    
    double gesamtPreis = 0;
    
    String muenzenInput;
    double muenzen;
    
    Scanner eingabewert = new Scanner(System.in);
    
    double wasserPreis = 0.5;
    int limonadePreis = 1;
    int bierPreis = 2;
    
    System.out.println("Getrauenke Automat v0.3");
    
    System.out.println("");
    
    System.out.println("Waehlen sie ihr Getraenk aus:");
    System.out.println("1) Wasser   (0,50 Euro");
    System.out.println("2) Limonade (1,00 Euro");
    System.out.println("3) Bier     (2,00 Euro)");
    
    System.out.println("");
    
    System.out.print("Geben sie 1, 2 oder 3: ");
    auswahl= eingabewert.nextInt();
    
    System.out.println("");
    
    System.out.print("Geben sie die gewuenschte Menge ein: ");
    menge= eingabewert.nextInt();
    
    System.out.println("");
    
    System.out.println("--- Bezahlvorgang ---");
    
    if (auswahl == 1) {
    
    gesamtPreis = menge * wasserPreis;
      
    }
    
    if (auswahl == 2) {
    
    gesamtPreis = menge * limonadePreis;
      
    }
    
    if (auswahl == 3) {
    
    gesamtPreis = menge * bierPreis;
      
    }
    
    while (gesamtPreis>0) {
    
    System.out.println("Es fehlen noch "+gesamtPreis+" Euro.");
    System.out.print("Bitte werfen sie ein Geldstueck ein: ");
    muenzen = eingabewert.nextDouble();
    gesamtPreis = gesamtPreis - muenzen;
      
    } // end of while

Jetzt habe ich nur das Problem das wenn ich bei der usereingabe "muenzen" zum beispiel 0.5 eingebe das Program nicht darauf klar kommt. Wie kann ich die methode scanner so "konfigurieren" das auch "double" werte bei dieser usereingabe umgewandelt werden ?
 
Java:
String auswahlInput;
    int auswahl;
   
    String mengeInput;
    int menge;
   
    double gesamtPreis = 0;
   
    String muenzenInput;
    double muenzen;
   
    Scanner eingabewert = new Scanner(System.in);
   
    double wasserPreis = 0.5;
    int limonadePreis = 1;
    int bierPreis = 2;
   
    System.out.println("Getrauenke Automat v0.3");
   
    System.out.println("");
   
    System.out.println("Waehlen sie ihr Getraenk aus:");
    System.out.println("1) Wasser   (0,50 Euro");
    System.out.println("2) Limonade (1,00 Euro");
    System.out.println("3) Bier     (2,00 Euro)");
   
    System.out.println("");
   
    System.out.print("Geben sie 1, 2 oder 3: ");
    auswahl= eingabewert.nextInt();
   
    System.out.println("");
   
    System.out.print("Geben sie die gewuenschte Menge ein: ");
    menge= eingabewert.nextInt();
   
    System.out.println("");
   
    System.out.println("--- Bezahlvorgang ---");
   
    if (auswahl == 1) {
   
    gesamtPreis = menge * wasserPreis;
     
    }
   
    if (auswahl == 2) {
   
    gesamtPreis = menge * limonadePreis;
     
    }
   
    if (auswahl == 3) {
   
    gesamtPreis = menge * bierPreis;
     
    }
   
    while (gesamtPreis>0) {
   
    System.out.println("Es fehlen noch "+gesamtPreis+" Euro.");
    System.out.print("Bitte werfen sie ein Geldstueck ein: ");
    muenzen = eingabewert.nextDouble();
    gesamtPreis = gesamtPreis - muenzen;
     
    } // end of while

Jetzt habe ich nur das Problem das wenn ich bei der usereingabe "muenzen" zum beispiel 0.5 eingebe das Program nicht darauf klar kommt. Wie kann ich die methode scanner so "konfigurieren" das auch "double" werte bei dieser usereingabe umgewandelt werden ?
Um diesen Error zu umgehen habe ich einfach muenzenInput = System.console().readLine(); muenzen = Double.parseDouble(muenzenInput); an stelle der muenzen = eingabewert.nextDouble(); eingegeben, jedoch würde ich trotzdem gerne den "Scanner" verwenden
 
Jetzt habe ich nur das Problem das wenn ich bei der usereingabe "muenzen" zum beispiel 0.5 eingebe das Program nicht darauf klar kommt.
Scanner nutzt die Einstellungen des Users, d.h. du wirst Deutsche Einstellungen (In Java die sogenannte Locale) haben. Da wäre dann vermutlich 0,5 als Eingabe erfolgreich.

Du kannst die Einstellungen, die der Scanner nutzen soll, auch setzen. Dazu dient die Methode useLocale. Wenn Du also die Englischen Einstellungen haben willst, dann könntest Du etwas machen wie:
Java:
Scanner eingabewert = new Scanner(System.in);
eingabewert.useLocale(Locale.ENGLISH);
Scanner (Java SE 17 & JDK 17) (oracle.com)
Locale (Java SE 17 & JDK 17) (oracle.com)
 
Ah super, habe darüber garnicht nachgedacht. Da ich beim "normalen" umwandeln des Datentyps String - Double die werte mit . schreiben muss aber beim normalen EU scanner dieser ein "," haben möchte.
 

Zurück
Oben