Konsoleneingabe mit Abbruchbedingung beenden

datamox

Mitglied
Guten Abend zusammen,

ich hoffe sehr, dass es euch allen gut geht.

Der untenstehende Code ermöglicht es mir, einen Betrag in die Konsoleneingabe einzulesen, die MwSt. dazu zu addieren und das Ergebnis auszugeben und das immer wieder aufs neue, was mir die While-Schleife ermöglicht.
Allerdings, und da fehlt mir aktuell das Verständnis für, möchte ich eine Abbruchbedingung in Form eines Buchstabens bei Eingabe in die Konsole, hinzufügen und hoffe, dass ihr mir hierbei einen Denkanstoß mitgeben könnt.

Der Code anbei: (IDE:Eclipse / BS:Win10H)


Java:
[/B]
import java.util.Scanner;

public class Projekt_Mehrwertsteuer {


    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        double mwstSatz = 0.19;
        
        
        while (true) {
        System.out.println("Bitte einen Betrag zur Berechnung eingeben:");
        double nettobetrag = scanner.nextDouble();
        System.out.println(nettobetrag + nettobetrag * mwstSatz + "€");
        }
    
    }

}
[B]

Vielen Dank und euch einen angenehmen Abend,
mox
 
Allerdings, und da fehlt mir aktuell das Verständnis für, möchte ich eine Abbruchbedingung in Form eines Buchstabens bei Eingabe in die Konsole, hinzufügen und hoffe, dass ihr mir hierbei einen Denkanstoß mitgeben könnt.
In dem Fall könntest Du mit nextLine() statt nextDouble() arbeiten. Dann sorgst Du dafür, dass die Schleifenbedingung nicht mehr erfüllt ist, falls der gewünschte Buchstabe eingelesen wurde. Außerdem wandelst Du im Fall einer Zahl den gelesenen String per Double.parseDouble in ein double um.
 
Hej Mihe7, danke Dir für deine prompte Rückmeldung. Hier sehe ich ja gerade meine Herausforderung, wie binde ich in diesen Code den gewünschten Buchstaben ein, der bei Eingabe das Programm beendet? Die Schleife läuft so lange bis ich bspw. alle Werte berechnet habe und möchte daraufhin die Schleife verlassen durch Eingabe bspw. des Buchstabens "x". mox
 
Das habe ich doch oben geschrieben: Du liest eine Zeile per nextLine() ein und die vergleichst Du mit dem Buchstaben. Entspricht es dem Buchstaben beendest Du die Schleife, sonst wandelst Du per Double.parseDouble() die Zeile in ein double um.
 
Wenn es irgendein Buchstabe sein kann, dann könntest du auch nextDouble() beibehalten und die InputMismatchException abfangen, die bei Eingabe eines Buchstaben und nextDouble() geworfen wird.
 
Hej @mihe7, offen gesagt und das bitte ich zu entschuldigen, fehlt mir wie erwähnt noch das dafür notwendige Verständnis deinen Vorschlag umzusetzen und die dafür entsprechenden Anpassungen vorzunehmen. Könntest du mich hier bei Gelegenheit nochmals unterstützen?
 
Java:
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        double mwstSatz = 0.19;
        boolean betragAbfragen = true;

        while (betragAbfragen) {
            System.out.println("Bitte einen Betrag zur Berechnung eingeben:");
            String eingabe = scanner.nextLine();
            if ("quit".equalsIgnoreCase(eingabe)) {
                betragAbfragen = false;
            } else {
                try {
                    double nettobetrag = Double.parseDouble(eingabe);
                    System.out.printf("%.2f €\n", nettobetrag * (1 + mwstSatz));
                } catch (NumberFormatException ex) {
                    System.out.println("Nur Zahlen und \"quit\" sind erlaubt.");                }
            }
        }

    }
 

Zurück
Oben