Ich schreibe eine Regex für einen Android-Rechner. Die "+/- *" sind für nicht-dezimale Werte in Ordnung, aber das Problem liegt in dem ".". Wie überprüfe ich auf das "." ?Regex für Android-Rechner
Hier ist meine regex:
"(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)"
Das ist meine Methode für die Berechnung ist:
private double calc(String resultString) {
String[] result = resultString.split("(?<=[^\\\\d.])(?=\\\\d)|(?<=\\\\d)(?=[^\\\\d.])");
String op = null;
double res = 0;
for (String s : result) {
if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {
op = s;
}
else if(s.equals(".")){
}
else {
if (op == null) {
res = Double.parseDouble(s);
} else {
if (op.equals("+")) {
res = res + Double.parseDouble(s);
} else if (op.equals("-")) {
res = res - Double.parseDouble(s);
} else if (op.equals("*")) {
res *= Double.parseDouble(s);
} else if (op.equals("/")) {
res /= Double.parseDouble(s);
}
}
}
}
return res;
}
Dies scheitert die doppelte zu analysieren. –
Bitte geben Sie Ihren Code und Beispiel Eingabe/erwartete Ausgabe. –
Ich habe die obige Berechnungsmethode hinzugefügt –