Prüfen ob String eine Zahl mit maximal 2 Nachkommastellen ist

O

OhNo

Gast
Hallo zusammen,

ich habe eigentlich ein einfaches Problem. Ich habe einen String der eine Zahl repräsentiert. Dieser kann tausender Trennzeichen und ein Dezimaltrennzeichen haben.
Wie kann ich nun abprüfen ob der String eine Zahl ist und höchstens 2 Nachkommastellen hat?

z.b.
1000 -> true
1000,0 -> true
1000,00 -> true
1.000,11 -> true
1.000.000,22 -> true
1.000.000.000,33 -> true


1,555 -> false
1.000,55555 -> false
10.00,88 -> false

Ich hab schon versucht zu googeln mit DecimalFormat etc. rumgespielt aber ich bekomme es nicht hin. Bin für jeden Tip dankbar.

Grüße
OhNo
 

Bernd Hohmann

Top Contributor
Für die Nachkommastellen alleine:

Java:
boolean blnValid = strNum.length() - strNum.indexOf(",") < 4 || strNum.indexOf(",") == -1;

Ob der String eine Zahl mit der richtigen 1000er Gruppierung ist, wird so oder so ein Problem. Klassisch würde ich nach obiger Prüfung eine Schleife über den String machen und den erstmal auf 0-9 und "," "." prüfen wobei "," entweder nur 1x oder garnicht vorkommen darf. DIe 1000er gruppierung würde ich mit indexOf(char) und indexOf(char, fromindex) so prüfen dass der Abstand genau 3 ist.

Du kannst es natürlich auch über NumberFormat lösen (Zahl parsen lassen und neu aufbereiten, danach schauen ob die Strings identisch sind). Dazu musst Du aber den Ursprungsstring erstmal erweitern: ist kein "," vorhanden, "," anhängen. Danach solange "0" anhängen bist 2 NKS erreicht sind.

Java:
		String strNum = "1.2.34,56";

		if (strNum.indexOf(',') == -1) strNum += ",";
		while (strNum.length() - strNum.indexOf(',') < 3)
			strNum += "0";

		NumberFormat nf = DecimalFormat.getNumberInstance();
		Number numIn = nf.parse(strNum);

		nf.setMinimumFractionDigits(2);
		nf.setMaximumFractionDigits(2);
		nf.setGroupingUsed(true);

		String strOut = nf.format(numIn.doubleValue());

		System.out.println(strOut.equals(strNum));

Mit der Routine erschlägst Du auch das Problem mit der Prüfung auf 2 Nachkommastellen.

Vorsicht mit Locale: andere Länder formatieren 1,234.56 !

Bernd
 
Zuletzt bearbeitet:

DrZoidberg

Top Contributor
Du kannst auch regex verwenden.
Java:
String str = "123.342.211,23";
Pattern p = Pattern.compile("\\d{1,3}(\\.\\d{3})*(,\\d{2})?\\z");
Matcher m = p.matcher(str);
boolean isNumber = m.find();
System.out.println(isNumber);
double number = 0;
if(isNumber) number = Double.parseDouble(str.replace(".","").replace(",","."));
System.out.println(number);
 
Zuletzt bearbeitet:

Crian

Top Contributor
Das müsste noch leicht angepasst werden, damit auch Zahlen mit nur einer oder gar keiner Nachkommastelle gefunden werden. Desweiteren scheinen die Tausenderpunkte optional zu sein.
 

anti-held

Bekanntes Mitglied
hier eine Lösung...
könnte aber noch Bugs enthalten.

Java:
	private static boolean isSuitableNumber(String string) {
		System.out.print(string + " ");
		char[] array = string.toCharArray();
		boolean isCommaAppeared = false;
		boolean isPointAllowed = false;
		int commaIndex = 0;
		for (int i = array.length - 1; i >= 0; i--) {
			if (isCommaAppeared) {
				if((commaIndex == 0 ? array.length : commaIndex) - 4 == i && array[i] == '.'){
					isPointAllowed = true;
				}
				if (array[i] >= '0' && array[i] < '9') {
					continue;
				} else if (array[i] == '.' && isPointAllowed) {
					if (((commaIndex == 0 ? array.length : commaIndex) - i) % 4 != 0) {
						return false;
					}
				} else {
					return false;
				}
			} else {
				if (array[i] == ',') {
					isCommaAppeared = true;
					commaIndex = i;
					continue;
				}
				if (i < array.length - 2) {
					isCommaAppeared = true;
					i++;
					continue;
				}
				if (!(array[i] >= '0' && array[i] < '9')) {
					return false;
				}
			}
		}
		return true;
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
L String auf zahlenwert prüfen Allgemeine Java-Themen 13
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
H String auf Zahlen prüfen Allgemeine Java-Themen 4
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
TheJavaKid Zeile auf existenz von String prüfen. Allgemeine Java-Themen 19
N Prüfen ob ein String in einen Integer umgewandelt werden kan Allgemeine Java-Themen 4
O String auf zahlen prüfen (java 1.3) Allgemeine Java-Themen 4
C String str prüfen Allgemeine Java-Themen 3
H Prüfen ob ein String grösser als 4 Zeichen ist Allgemeine Java-Themen 3
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
OnDemand Prüfen ob Bild defekt ist Allgemeine Java-Themen 4
W Classpath Reflexion - Prüfen ob man auf ein Feld ändern kann Allgemeine Java-Themen 2
OnDemand Bild prüfen ob defekt Allgemeine Java-Themen 3
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
Bluedaishi Prüfen ob Datei noch geöffnet ist Allgemeine Java-Themen 59
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
J Mit Lombok Integer Range prüfen Allgemeine Java-Themen 6
S Prüfen ob Textfile existiert Allgemeine Java-Themen 9
E Programm auf Installation prüfen Allgemeine Java-Themen 1
S Binärbaum prüfen Allgemeine Java-Themen 0
W Datum prüfen + zweistellig Allgemeine Java-Themen 11
perlenfischer1984 Functionsparameter prüfen und eine Exception werfen !? Allgemeine Java-Themen 11
Z Java Exceptions - Auf leeres Feld prüfen Allgemeine Java-Themen 10
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
M .jar nach Datei prüfen Allgemeine Java-Themen 2
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
F Cardlayout prüfen ob schon vorhanden, keine doppelten Allgemeine Java-Themen 3
turmaline Regex gegen Regex prüfen Allgemeine Java-Themen 4
S Lambda Ausdrücke: @FunctionalInterface Instanzen auf null prüfen Allgemeine Java-Themen 9
D ArrayList index auf gültigkeit prüfen Allgemeine Java-Themen 12
C Best Practice [Arrays] Wie sinnvoll prüfen, ob Array primitive Datentypen enthält? Allgemeine Java-Themen 6
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
Y Prüfen ob ein Graph immer einen von mehren Enden erreicht Allgemeine Java-Themen 4
M datei aufruf prüfen Allgemeine Java-Themen 9
D Best Practice Prüfen ob jar nachträglich geändert wurde Allgemeine Java-Themen 2
B Dateien prüfen auf Gleichheit Allgemeine Java-Themen 5
T auf Valides Datum prüfen Allgemeine Java-Themen 12
N Java Version Prüfen lassen Allgemeine Java-Themen 11
S Variablen Prüfen ob Number vom Typ Integer, Float, Double, ... ist Allgemeine Java-Themen 2
E selber Klassen kompilieren/ prüfen Allgemeine Java-Themen 5
O Variablen Originalname einer übergebenen Variable prüfen Allgemeine Java-Themen 9
T Methoden Zahlenpalindrom laufzeitoptimiert prüfen Allgemeine Java-Themen 4
U ResourceBundles auf vollständigkeit prüfen Allgemeine Java-Themen 2
C jollyday: prüfen, ob Datum = Feiertag Allgemeine Java-Themen 8
C Prüfen ob sich ein Punkt innerhalb einer Kugel befindet (Java3D,nicht-lineare GLS) Allgemeine Java-Themen 5
M Objekt prüfen auf null ->Invocation Target Exception??? Allgemeine Java-Themen 2
E Prüfen ob Fenster mit Namen offen ist Allgemeine Java-Themen 2
M Binärbaum auf vollständigkeit prüfen Allgemeine Java-Themen 4
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
O Text mit Wildcard gegen regulären Ausdruck prüfen Allgemeine Java-Themen 3
N List auf null prüfen Allgemeine Java-Themen 2
B generischen Typ prüfen Allgemeine Java-Themen 7
D prüfen, ob Enums bestimmte Elemente enthalten Allgemeine Java-Themen 3
N Prüfen ob Methode ausgeführt wird und diese ggf. abbrechen? Allgemeine Java-Themen 8
B Prüfen ob ein Programm gestartet wurde Allgemeine Java-Themen 23
N ArrayList nach Reihenfolge prüfen Allgemeine Java-Themen 2
C Prüfen auf Zahl und 6 stellig fehlerhaft? warum? Allgemeine Java-Themen 7
H Prüfen, ob doppete Werte in int-Array vorhanden sind Allgemeine Java-Themen 16
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
S Prüfen auf Hex-Wert fester Länge! Allgemeine Java-Themen 5
M Prüfen, welche anderen Programme laufen Allgemeine Java-Themen 5
K Zip dateien prüfen Allgemeine Java-Themen 3
G ZIP Archiv auf Konsistenz prüfen Allgemeine Java-Themen 2
T Parameter einer Klasse auf Interface prüfen Allgemeine Java-Themen 6
L Passwort mit Regulärem Ausdruck prüfen Allgemeine Java-Themen 6
P Sound Buffer prüfen Allgemeine Java-Themen 12
B PrintService - Wie prüfen ob Drucker online ist? Allgemeine Java-Themen 2
A Textfeld prüfen, ob ein Punkt eingegeben wurde Allgemeine Java-Themen 8
flashfactor Prüfen ob bereits eine Instanz gestartet ist Allgemeine Java-Themen 2
C Prüfen, ob eine Methode eine andere überschreibt! WIE? Allgemeine Java-Themen 8
T Prüfen, ob Char ein Quantifier ist Allgemeine Java-Themen 6
N Prüfen ob Objekt in Liste enthalten ist Allgemeine Java-Themen 17
G Prüfen welche JRE-Version gebraucht wird Allgemeine Java-Themen 19
J Mit Patternmatching einen Satz prüfen Allgemeine Java-Themen 12
G Prüfen ob Ziffern einer Zahl pandigital sind? Allgemeine Java-Themen 15
M Prüfen ob Variable vorhanden / initalisiert ist Allgemeine Java-Themen 4
J Wie prüfen ob eine Datei vom OS fertig geschrieben wurde? Allgemeine Java-Themen 6
A Weshalb man Parameter auf Gültigkeit prüfen sollte Allgemeine Java-Themen 6
G Datei Zugriffsrechte prüfen Allgemeine Java-Themen 2
Linad Bilder auf Gleichheit prüfen Allgemeine Java-Themen 6
G ResultSet auf Inhalt prüfen? Allgemeine Java-Themen 2
H Prüfen, ob es sich um ein Integer handelt Allgemeine Java-Themen 4
F Prüfen, ob Windows oder UNIX Allgemeine Java-Themen 2
C EML Email Text in String wandeln Allgemeine Java-Themen 9
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
M String Allgemeine Java-Themen 10
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
O String in Long Hexerdezimal umwandel Allgemeine Java-Themen 14
N String vergleichen. Allgemeine Java-Themen 27
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
M Switches ohne String Allgemeine Java-Themen 18

Ähnliche Java Themen

Neue Themen


Oben