Doublewert auf korrektheit überprüfen

headnut

Gesperrter Benutzer
Hallo

ich habe einen Double wert der sich immer folgendermassen zusammensetzten muss:

xxxxx.xx

Wie kann ich den kontrollieren?

Das format ist wichtig, die zahlen nicht, und der punkt muss an dieser stelle sein..

Vielen Dank schonmal
 

eRaaaa

Top Contributor
Z.B.
Java:
		double d = 44444.44;//xxxxx.xx
		boolean isValid = String.valueOf(d).matches("\\d{5}\\.\\d{2}");

/edit: mhm stimmt, das habe ich natürlich nicht beachtet, die Nachkommazahl wird natürlich abgetrennt ....Ich würde direkt Strings benutzen, anders wirds nicht gehen imho! (auch nicht mit den unten stehenden Lösungen!)
 
Zuletzt bearbeitet:

headnut

Gesperrter Benutzer
Das funktionier fast perfekt ich wusste dass es eine einfache lösung gibt:)

Nur der fall wenn ich nach dem punkt zwei 00 habe geht nicht, hast du da auch noch was oder soll ich was zurecht basteln?
 

Andi_CH

Top Contributor
So ein Schnellschuss ...
Java:
	double d = 44444.00;//xxxxx.xx
	String fmt = "%.2f";
	String str = String.format(fmt, d);
	System.out.println(str);
	System.out.println(str.matches("\\d{5}\\.\\d{2}"));

Wobei das wohl versagt wenn der double z.B. 44444.00003 ist.
Vielleicht musst du etwas kombinieren, wobei doubles ja nicht beliebig genau abgebildet werden, also immer was dahinter kommen kann ... also ist der Test in meinen Augen sowieso ein bisschen fraglich.
 

headnut

Gesperrter Benutzer
Ich will aber nichts ausgeben sondern kontrollieren...

und eine division durch null geht halt nun mal nicht so einfach, deshab hab ich nochmal gefragt
 

Ariol

Top Contributor
Benutz lieber
Code:
matches("\\d{5}[,\\.]\\d{2}")
.
Durch die Lokalisierung wird nämlich schnell ein Komma aus dem Punkt.
 

headnut

Gesperrter Benutzer
okey wird aber alles zu schwammig jetzt!

es müssen ein . un zwei zahlen hinter dem punkt sein! dies ist das wichtigste!

das erste ist immer noch top. jedoch geht es einfach mit zwei 00 nicht! was auch logisch ist eigentlich...
 

Andi_CH

Top Contributor
Ich will aber nichts ausgeben sondern kontrollieren...

und eine division durch null geht halt nun mal nicht so einfach, deshalb hab ich nochmal gefragt
Ich dividiere doch nirgends durch null???
Also wenn du den Schritt von Ausgabe eines booleans zum Test nicht schaffst, ist dir nicht mehr zu helfen - sorry, aber bei der Affenhitze bin ich immer SEHR direkt.
Java:
	double d = 44444.00;//xxxxx.xx
	String fmt = "%.2f";
	String str = String.format(fmt, d);
	if (str.matches("\\d{5}\\.\\d{2}")) {
		System.out.println("Zahl in Ordnung");
	} else {
		System.out.println("Zahl nicht in Ordnung");
	}

Besser so ???:L
 

Ariol

Top Contributor
Code:
String.format()
führt eine Lokalisierung durch.

es müssen ein . un zwei zahlen hinter dem punkt sein! dies ist das wichtigste!
Der Punkt brauch dich nicht zu interessieren, da das die String-Darstellung eines Double-Wertes ist.



Ich finde die Aufgabenstellung etwas seltsam. Kann es sein, dass du String-Darstellungen von Double-Werten überprüfen sollst? Alles andere ist ziemliche Auslegungssache:

Welche davon sind denn korrekt?
00123.00?
00123.0?
00123?

Oder hiervon:
123.00?
123?
123.0?

Oder davon:
12345.00?
12345.0?
12345?


Wie dir auffällt sind die Zahlen innerhalb einer Gruppe die selben in verschiedenen Darstellungen.

Hast du ein Code-Stück oder ähnliches?
Wozu dient diese Überprüfung?

Es gibt außerdem verschiedene Arten das Thema anzugehen:
Java:
double d = 44444.44;//xxxxx.xx
boolean isValid = (d>=10000.00 && d<=99999.99) && ((d*100.0)-(int)(d*100.0)==0);
 

Ariol

Top Contributor
...
Java:
	double d = 44444.00;//xxxxx.xx
	String fmt = "%.2f";
	String str = String.format(fmt, d);
	if (str.matches("\\d{5}\\.\\d{2}")) {
		System.out.println("Zahl in Ordnung");
	} else {
		System.out.println("Zahl nicht in Ordnung");
	}

Besser so ???:L

Nö:
Code:
Zahl nicht in Ordnung
Liegt daran, dass
Code:
str="44444,00"
ist.

Java:
	double d = 44444.00;//xxxxx.xx
	String fmt = "%.2f";
	String str = String.format(fmt, d);
	if (str.matches("\\d{5}[,\\.]\\d{2}")) {
		System.out.println("Zahl in Ordnung");
	} else {
		System.out.println("Zahl nicht in Ordnung");
	}

So geht's bei mir.
 

headnut

Gesperrter Benutzer
Eben jetzt hat mich einer verstanden

das Format muss xxxxx.xx sein

Es spielt keine Rolle welchen wert sondern das format muss stimmen!

und eine letzte Version:

double d = 44444.00;//xxxxx.xx
String fmt = "%.2f";
String str = String.format(fmt, d);
if (str.matches("\\d{5}\\.\\d{2}")) {
System.out.println("Zahl in Ordnung");
} else {
System.out.println("Zahl nicht in Ordnung");
}

funktioniert eben nicht!

Es ist nicht ganz so einfach, deshalbt hab ich auch nachgefragt
 

Ariol

Top Contributor
Es ist schon ganz einfach, wenn du wirklich sagst was du willst.
Du hast keinen Double-Wert, sondern dessen String-Darstellung.
Java:
String value="12345.32";
boolean valid=value.matches("\\d{5}\\.\\d{2}");
 

headnut

Gesperrter Benutzer
Mittlerweile funktioniert die Sache. Vielen Dank an alle ich habe es nun zusätzlich über die länge gelöst!

Ich durfte nur nicht zuerst in einen double wert parsen, da für diesen .00 und .0 daselbe ist!

Code:
if (artikelnummer.matches("\\d{5}\\.\\d{2}")) {			
				System.out.println(artikelnummer.length());
	    	if (artikelnummer.length() == 8) {
				System.out.println("Artikelnummer OK");
				ok = true;
			} else {	
				System.out.println("Artikelnummer NOK");
				ok = false;
			}
		} else {
			ok = false;
		}
	    return ok;
	}

so gehts perfekt
 

Michael...

Top Contributor
Code:
if (artikelnummer.matches("\\d{5}\\.\\d{2}")) {
Wenn dieser RegEx passt, dann ist artikelnummer 8 Zeichen lang und die anschließende Überprüfung
Code:
if (artikelnummer.length() == 8) {
überflüssig.

Und da hier von "artikelnummer" die Rede ist, ist es merkwürdig warum Du die ganze Zeit von Doublewerten gesprochen hast, wenn es sich doch gar nicht um double Werte handelt??
 
G

Gast2

Gast
wenn der Regex matcht dann hat dein String immer die Länge 8, deine if-abfrage ist da also nutzlos.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Suche Konzept: Korrektheit des Aufrufers feststellen Allgemeine Java-Themen 7
T Best Practice überprüfen von Übergabeparametern Allgemeine Java-Themen 17
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
killig HashMap mit if-Anweisung überprüfen Allgemeine Java-Themen 4
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
temi best practice: Parameter überprüfen, wo? Allgemeine Java-Themen 9
E Variablen Aus .txt ausgelesener string mit if() überprüfen? Allgemeine Java-Themen 2
H Wie kann ich überprüfen ob das Feld noch frei ist? Allgemeine Java-Themen 5
C Email Versand überprüfen Allgemeine Java-Themen 1
F Vier gewinnt Diagonal überprüfen Allgemeine Java-Themen 2
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
B Datei überprüfen, ob diese Freigeben ist oder fertig geschrieben wurde Allgemeine Java-Themen 3
T String auf Inhalt bzw. Schema überprüfen Allgemeine Java-Themen 12
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Hash von *.class-Datein überprüfen Allgemeine Java-Themen 1
A List<String> auf doppelte Einträge überprüfen Allgemeine Java-Themen 4
S Ziffern auf Existenz überprüfen Allgemeine Java-Themen 13
K Threads Thread überprüfen Allgemeine Java-Themen 3
R ThreadPool - vorhandene thread liste überprüfen bzw. aufräumen Allgemeine Java-Themen 3
C String überprüfen Allgemeine Java-Themen 2
T Methodenparameter zur Compile-Zeit überprüfen Allgemeine Java-Themen 8
K Vollständiges Schreiben überprüfen Allgemeine Java-Themen 4
X Java Schachzüge überprüfen Allgemeine Java-Themen 7
C Array überprüfen Allgemeine Java-Themen 8
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
J DecimalFormat überprüfen Allgemeine Java-Themen 8
G überprüfen ob string unteranderem ein regex enthalten Allgemeine Java-Themen 7
D Kommazahl auf Richtigkeit überprüfen Allgemeine Java-Themen 3
C Reflection Übergabeparamter überprüfen? Allgemeine Java-Themen 3
X XML- Datei überprüfen Allgemeine Java-Themen 2
S String auf ASCII Kodierung überprüfen? Allgemeine Java-Themen 4
T String auf Kommazahl überprüfen Allgemeine Java-Themen 4
P Verbindung überprüfen Allgemeine Java-Themen 5
I Zeile überprüfen Allgemeine Java-Themen 12
J Chars auf Gleichheit mit Klamern/Operatoren überprüfen Allgemeine Java-Themen 3
N Ausgaben (System.out) umlenken und in Unit-Tests überprüfen? Allgemeine Java-Themen 2
J Datum auf Gültigkeit überprüfen Allgemeine Java-Themen 4
P Wie überprüfen ob es sich Hexadezimalzahl handelt? Allgemeine Java-Themen 2
S Klasse einer Methode übergeben und überprüfen Allgemeine Java-Themen 7
M String auf Zeichen überprüfen Allgemeine Java-Themen 5
N String überprüfen ob nur Ziffern enthalten sind!! Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben