Strings und das parsen

W

WaltoN

Mitglied
Hallo liebe Community,

eins vorweg: Ich freue mich hier bei euch sein zu dürfen, da ich diese Website schon länger Besuche wenn gerade in meiner Umschulung einige Probleme auftreten. Gerade bin ich dabei privat ein kleines Programm zu schreiben welches mir ganz Simpel Spritkosten ausrechnen soll. Leider bin ich zu blöd um die Strings vernünftig parsen zu lassen und auch eine Kommazahl zu erkennen... Desweiteren kann ich leider nur eine Zahl (Ziffer) eingeben was blöd ist wenn man zwei- oder dreistelligen wert hat. Ich glaube eh das ich viel zu kompliziert arbeite, vielleicht könnt ihr mir ja behilflich sein. Danke im voraus!

Java:
    private void berechneButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_berechneButtonMouseClicked
        if (evt.getButton() == java.awt.event.MouseEvent.BUTTON1) {
            if (eingabe1() == true) {
                berechne();
            }
//            eingabe1();
//            eingabe2();
//            eingabe3();
//            eingabe4();
//            eingabe5();
        }
    }//GEN-LAST:event_berechneButtonMouseClicked

    public boolean eingabe1() {
        neuKMEingabe.setBackground(Color.WHITE);
        boolean eingabe11 = false;
        String eingabe1 = neuKMEingabe.getText();
        int position = buchstabe(eingabe1);
        if (position == -1) {
            infoLabel.setText("Bitte eine Zahl eingeben!");
            neuKMEingabe.setBackground(Color.RED);
        } else if (position == 0) {
            infoLabel.setText("Bitte eine Zahl eingeben!");
            neuKMEingabe.setBackground(Color.RED);
        } else {
            neuKMEingabe.setBackground(Color.WHITE);
            return eingabe11 = true;
        }
        return eingabe11;
    }

    public static int buchstabe(String eingabe) {
        if (eingabe.equals(" ")) {
            return -1;
        }
        eingabe = eingabe.toUpperCase();
        int position = " 0123456789".indexOf(eingabe);
        return position;
    }

    public void berechne() {
        infoLabel.setText("");
        neuKMEingabe.setBackground(Color.WHITE);
        tankenEingabe.setBackground(Color.WHITE);
        preisEingabe.setBackground(Color.WHITE);
        tageEingabe.setBackground(Color.WHITE);
        altKMEingabe.setBackground(Color.WHITE);
        String kmAlt = altKMEingabe.getText();
        NumberFormat format = NumberFormat.getInstance(Locale.getDefault());
        Number kmAltNumber = null;
        try {
            kmAltNumber = format.parse(kmAlt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        double kmAltDouble = kmAltNumber.doubleValue();
        String kmNeu = neuKMEingabe.getText();
        Number kmNeuNumber = null;
        try {
            kmNeuNumber = format.parse(kmNeu);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        double kmNeuDouble = kmNeuNumber.doubleValue();
        String getankt = tankenEingabe.getText();
        Number getanktNumber = null;
        try {
            getanktNumber = format.parse(getankt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        double getanktDouble = getanktNumber.doubleValue();
        String bezahlt = preisEingabe.getText();
        Number bezahltNumber = null;
        try {
            bezahltNumber = format.parse(bezahlt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        double bezahltDouble = bezahltNumber.doubleValue();
        String tage = tageEingabe.getText();
        Number tageNumber = null;
        try {
            tageNumber = format.parse(tage);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        double tageDouble = tageNumber.doubleValue();
        System.out.println(kmAltDouble+kmNeuDouble+getanktDouble+bezahltDouble+tageDouble);
    }
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
Das Problem ist deine Überprüfung, ob eine korrekte Zahl eingegeben wurde:

Deine Überprüfung ist (abgekürzt) ein "0123456789".contains(eingabe); - deine Eingabe muss also genau so, wie es eingegeben wurde, in "0123456789" vorkommen.

* Alle einzelnen Ziffern klappen natürlich problemlos.
* Kommazahlen sind nicht erlaubt, ein Komma kommt ja in "0123456789" nicht vor
* Längere Zahlen funktionieren manchmal:
** "123" oder "678" wären zB möglich, das kommt ja genauso in "0123456789" vor
** "321" aber nicht, das findet sich ja nicht in "0123456789" wieder
 
W

WaltoN

Mitglied
Danke mrbrown für Deine schnelle Antwort. Also ich verstehe zwar was du meinst, jedoch nicht wie ich das am besten schreiben kann.
 
W

WaltoN

Mitglied
Danke TM69 für Deine Antwort. Du meinst dann ungefähr so wenn ich das jetzt richtig verstanden habe?

Java:
    public boolean eingabe1() {
        neuKMEingabe.setBackground(Color.WHITE);
        String eingabe1 = neuKMEingabe.getText();
        if (Pattern.matches("[1234567890]*", eingabe1)) {
            System.out.println("Klappt 1");;
            altKMEingabe.setBackground(Color.BLUE);
            return abfrage1 = true;
        } else {
            infoLabel.setText("Bitte eine Zahl eingeben!");
            altKMEingabe.setBackground(Color.RED);
            return abfrage1 = false;
        }
    }
 
Zuletzt bearbeitet:
W

WaltoN

Mitglied
Das Problem hierbei ist, das er nun gar nichts mehr macht... Habe alle 5 eingaben entsprechend auf die hier geändert und oben folgende abfrage gestellt:

Java:
    private void berechneButtonMouseClicked(java.awt.event.MouseEvent evt) {
        if (evt.getButton() == java.awt.event.MouseEvent.BUTTON1) {
            if ((abfrage1 == true) && (abfrage2 == true) && (abfrage3 == true) && (abfrage4 == true) && (abfrage5 == true)) {
                berechne();
                System.out.println("Berechne...");
            } else {
                System.out.println("Da geht was nicht");
            }
        }
    }
 
sascha-sphw

sascha-sphw

Top Contributor
Testet Zahlen [0-9] sowie [0-9].[0-9] sowie [0-9],[0-9] je nachdem was das Dezimalzeichen ist. Anzahl der Stellen ist nicht begrenzt, muss aber mindestens 1 Digit sein.
Java:
Pattern pattern = Pattern.compile("\\d+((\\.||,)\\d+)?");
Matcher matcher = pattern.matcher(input);
if(matcher.matches()) {
    System.out.println("match");
} else {
    System.out.println("no match");
}
 
mihe7

mihe7

Top Contributor
Java:
NumberFormat nf = NumberFormat.getInstance();
try {
    double value = nf.parse(input).doubleValue();
    // alles ok
} catch (ParseException ex) {
    // Fehler beim Parsen von input
}
 
W

WaltoN

Mitglied
Vielen Dank für eure Zahlreichen antworten. irgendwie will jedoch das Pattern bei mir nicht so recht.. Habe es deshalb ein klein wenig anders gelöst. Funktioniert super mit dieser Methode:

Java:
public static boolean isNumeric(String string) {
        return string.matches("^[-+]?\\d+(\\,\\d+)?$");
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Fehlerbehandlung beim Parsen von Strings Java Basics - Anfänger-Themen 9
G Parsen eines Strings Java Basics - Anfänger-Themen 4
P Datei mit Strings parsen Java Basics - Anfänger-Themen 4
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
N Strings verpflechten Java Basics - Anfänger-Themen 4
W Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
A 2 Strings vergleichen in einer methode wenn man mit Globalen variablen arbeitet Java Basics - Anfänger-Themen 12
L Strings aneinanderhängen Java Basics - Anfänger-Themen 2
M Strings vergleichen Java Basics - Anfänger-Themen 10
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
S 2 Strings mit Equals vergleichen Java Basics - Anfänger-Themen 11
Q Besitzen zwei Strings identische Buchstaben, nur in anderer Reihenfolge? Java Basics - Anfänger-Themen 10
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Ternärer Operator mit Strings Java Basics - Anfänger-Themen 3
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
P Verketten, Aneinanderreihen von Strings Java Basics - Anfänger-Themen 2
M Strings mit gerader und ungerader Länge ausgeben Java Basics - Anfänger-Themen 10
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
D Vergleichen von Strings Java Basics - Anfänger-Themen 6
M Konkatenation von zwei Strings Java Basics - Anfänger-Themen 6
J Abbruchbedingung in Schleife/ Untersuchung von Strings Java Basics - Anfänger-Themen 2
S Buchstaben in Großbuchstaben (Strings) Java Basics - Anfänger-Themen 5
X Anagramm mit Strings und Methode Java Basics - Anfänger-Themen 53
P geschachtelte Schleife mit Strings Java Basics - Anfänger-Themen 2
P Strings mit der Axt zerteilen Java Basics - Anfänger-Themen 7
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
K Strings hochzählen Java Basics - Anfänger-Themen 20
J Strings untereinander in einer Liste vergleichen Java Basics - Anfänger-Themen 18
B Frage zu: String... strings -> Ungleiche Anzahl an Parameter? Java Basics - Anfänger-Themen 4
F Vergleiche mit charAt funktioniert bei Strings nicht, was tun? Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6
J Unveränderbarkeit von Strings Java Basics - Anfänger-Themen 3
O Klammerung bei Strings Java Basics - Anfänger-Themen 10
A Liste aus drei Strings erstellen Java Basics - Anfänger-Themen 5
N Zwei Strings mit "==" vergleichen warum TRUE Java Basics - Anfänger-Themen 2
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
D ergebnis.matches("[1-9]?[0-9].[0-9][0-9]?") ein teil eines größeren Strings Java Basics - Anfänger-Themen 12
J Breite eines Strings bestimmen Java Basics - Anfänger-Themen 4
D Zwei Strings sind gleich bei if aber nicht true Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
J Strings sind gleich werden aber ungleich ausgewertet Java Basics - Anfänger-Themen 2
N Vergleich von Strings schlägt fehl.. Java Basics - Anfänger-Themen 5
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
B mir nur die Gesamtzahl von einzigartigen Strings aus Array ausgeben lassen Java Basics - Anfänger-Themen 5
R Erste Schritte Sicheres einlesen eines Strings Java Basics - Anfänger-Themen 2
F Maximale Länge eines Strings Java Basics - Anfänger-Themen 5
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
Jinnai4 Strings ersetzen Java Basics - Anfänger-Themen 9
R Übergeben eines Array Strings an einen Spinner Java Basics - Anfänger-Themen 4
L Rekursiv zwei Strings vergleichen Java Basics - Anfänger-Themen 3
L Prüfe, ob die im String Array enthaltenen Strings aufsteigend sind. Java Basics - Anfänger-Themen 19
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
C 2 Strings Java Basics - Anfänger-Themen 15
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Strings in andere Klassen importieren. Java Basics - Anfänger-Themen 2
D BlueJ Java: Strings voneinander trennen Java Basics - Anfänger-Themen 11
javaerd Wie kann ich Brute Force Methode mit Strings erweitern Java Basics - Anfänger-Themen 1
R Erste Schritte Strings "einrücken" Java Basics - Anfänger-Themen 3
Yamie ArrayList<Object> als Liste von Strings ausgeben? Java Basics - Anfänger-Themen 15
B gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben Java Basics - Anfänger-Themen 5
R Teilinhalt eines Strings testen Java Basics - Anfänger-Themen 10
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
L Werte von Strings ? Java Basics - Anfänger-Themen 1
L Strings und Arrays - Expand Java Basics - Anfänger-Themen 12
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
Syncopated Pandemonium Verketten von Strings funktioniert nicht Java Basics - Anfänger-Themen 4
F Wahrscheinlichkeit von Strings Java Basics - Anfänger-Themen 3
M Splitten eines Strings Java Basics - Anfänger-Themen 5
T Hashfunktion für Strings Java Basics - Anfänger-Themen 3
C Zeilenumbruch für langes Strings Java Basics - Anfänger-Themen 2
J Variablen Strings mit Zeilenumbrüchen in neues Array Element Java Basics - Anfänger-Themen 1
T Datentypen compareTo() u. equals() bei Strings Java Basics - Anfänger-Themen 3
H Strings vergleichen & sortieren Java Basics - Anfänger-Themen 20
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
T Strings ersetzen mit \ Java Basics - Anfänger-Themen 10
K Strings bearbeiten Java Basics - Anfänger-Themen 14
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
L Java Strings Buchstaben vertauschen Java Basics - Anfänger-Themen 4
L Strings in einem JOptionPane farbig Java Basics - Anfänger-Themen 2
A Wie bekomme ich zwei Strings in eine ArrayList Java Basics - Anfänger-Themen 4
C Chars eines Strings mit for schleife rückwärts auslesen Java Basics - Anfänger-Themen 8
J Buchstabe (char) an zufällige Position eines Strings einfügen Java Basics - Anfänger-Themen 1
hello_autumn Strings ersetzen... Java Basics - Anfänger-Themen 10
B Durch eine Liste von Strings laufen Java Basics - Anfänger-Themen 6
S Strings im Array nach Namen sortieren Java Basics - Anfänger-Themen 11
B Teile eines Strings in Zahl umwandel und damit weiterrechnen? Java Basics - Anfänger-Themen 3
P OOP Testen ob 2 Strings gleich sind Java Basics - Anfänger-Themen 8
C PrintWriter schreibt keine in Strings enthaltenen Zeilenumbrüche Java Basics - Anfänger-Themen 9
J Strings nach Teile sortieren Java Basics - Anfänger-Themen 4
M Warum sind Strings Immutable? Java Basics - Anfänger-Themen 7
L Java Format Strings Java Basics - Anfänger-Themen 2
S Strings verknüpfen Java Basics - Anfänger-Themen 9
D Erste Schritte Frage über .length in Strings Java Basics - Anfänger-Themen 4

Ähnliche Java Themen


Oben