Unbekannte Zahl aus einem String umwandeln

ben_

Mitglied
Hallo,

ich muss eine Zahl unbekannten Typs (int, long,float) aus einem String umwandeln.

Theoretisch könnte ich die einzelnen Umwandlungen einfach durchprobieren bis der richtige Typ gefunden worden ist. Aber kennt jemand vielleicht eine etwas elegantere Methode? ;-)

Danke für die Hilfe!

Gruß,
ben
 

njans

Top Contributor
PatternMatching wäre eine Möglichkeit :)
Die Zahl als RegEx schreiben und dann mit String.matches(RegEx) arbeiten.
Ich weiß es selbst nicht sicher, aber ich glaube das [JAPI]DecimalFormat [/JAPI]da auch etwas anbietet.
 

hdi

Top Contributor
Naja ob das Durchprobieren von x Pattern nun besser ist als der Aufruf von x Parse-Methoden? Außerdem liefert PatternMatching dir ja nur einen Wahrheitswert, das Parsen müsstest du trotzdem noch machen. Ich glaube einen wirklich einfacheren Weg als über die parse-Methoden mit entsprechender Behandlung von NumberFormatExceptions gibt's da nicht.
 

ben_

Mitglied
Hmm... Ist das Problem denn so selten?

Wie würde man z.B. eine Benutzereingabe per Konsole parsen in der verschiedenste Zahlen eingegeben werden könnten?

Z.B.:
-1, 0, 10, 10.5, 4546546546546446465464, ....

Gruß,
Benny
 
T

Tomate_Salat

Gast
Wenn die alle hintereinander eingegeben werden [japi]String#split(java.lang.String)[/japi] und dann das zurückgegebene array durchgehen und die Zahlen parsen.
 
T

Tomate_Salat

Gast
Hmm, hätte vllt doch mehr als den letzten Beitrag des TOs lesen sollen :D. Ich würde auch double oder BigDecimal (wie The_S schon geschrieben hat) verwenden. Du willst ja mit den Zahlen arbeiten, da solltest du schon ungefähr wissen, was dich erwartet. Sollte die Zahl mal den Rahmen sprengen: Meldung zurückgeben, dass diese Zahl eben nicht behandelt werden kann und dass eine andere eingegeben werden soll.
 

ben_

Mitglied
Ich weiß ja nicht genau was der User da eingetragen hat. Es kann ein String, eine negative Zahl, eine positive Zahl, etc. sein. Strings fange ich vorher schon ab.

Ziel ist anschließend über die Eingaben zu sortieren. Ich werde es jetzt mal mit dem Datentyp long für die Zahlen versuchen. Soweit ich gesehen habe, kann er fast alle Fälle abfangen. Und sollten dann wirklich eine zu große (zu kleine) Zahl eingegeben werden, gebe ich eine Msg zurück.

Danke für die Tipps....:)

Gruß,
ben
 

hdi

Top Contributor
Ich denke eher dass double das meiste abfängt. long versagt halt bei Fließkommazahlen. Er kann vllt was parsen, aber das ist dann nur der Teil vor dem Komma/Punkt.
 

jgh

Top Contributor
und denk daran, dass der Benutzer intuitiv -wahrscheinlich- ein Komma als Trennzeichen eingeben würde...zumindest hier in Deutschland.
 

langhaar!

Bekanntes Mitglied
Ich weiß ja nicht genau was der User da eingetragen hat. Es kann ein String, eine negative Zahl, eine positive Zahl, etc. sein.

Ich kann dein Problem nicht so ganz nachvollziehen.
Ok, du weisst nicht, was der Benutzer eingibt.
Aber ein Porgramm hat einen fest definierten Zweck;
soll heissen, du musst dem Benutzer mitteilen, was für eine Art von Datentyp er einzugeben hat.
Was nicht diesem Datentyp entspricht ist dann eine Fehleingabe und wird abgefangen.

Du hast uns jetzt den Fall präsentiert, dass du nicht weisst, welche Art von Zahl eingegeben wird.
Das macht nur Sinn, wenn je nach Art der Zahl eine verschiedenartige Verarbeitung durchgeführt wird.
 

ben_

Mitglied
Das mit der Eingabe war ein konkretes Beispiel um mein Problem etwas verständlicher zu erklären. Jedenfalls war es der Versuch. :)

Ich hoffe das wird jetzt nicht zu unübersichtlich:
Ich muss innerhalb einer Collection über Werte sortieren. Diese Werte liegen als Strings vor. Jetzt habe ich mir eine entsprechende comparator Klasse gebaut mit der ich die Collection sortieren kann. Bei "echtem" Text innerhalb des Strings ist das auch kein Problem, die Sortierung wird korrekt durchgeführt. Bei Zahlen jedoch erfolgt eine Sortierung nach der natürlichen Ordnung. Diese ist bei Zahlen aber nicht nach der Wertigkeit.

Daher möchte ich vorab prüfen ob es sich bei den Werten um Zahlen handelt und hier die entsprechende Sortierfunktion nutzen...

Gruß,
ben
 

The_S

Top Contributor
Eigener Comparator und immer nach Double parsen. Geht ggf. noch effektiver wenn immer nur Zahlen oder immer nur nicht-Zahlen in der Collection sind.
 

langhaar!

Bekanntes Mitglied
Daher möchte ich vorab prüfen ob es sich bei den Werten um Zahlen handelt und hier die entsprechende Sortierfunktion nutzen...

Damit ergibt sich ein ganz anderes Bild, als das, was du im Eingangsbeitrag gefragt hast.

Dich interessiert überhaupt nicht, ob der Benutzer ein int, long oder float eingegeben hat.
Der Benutzer gibt Strings ein.

Ob es überhaupt Sinn macht, Zeichenketten, die als Zahl interpretierbar sind, auch als Java Zahl zu interpretieren, hängt vom Kontext ab. Was passiert mit einer Zeichenkette aus sehr vielen Ziffern (z.B. über 100)?
Was machst du mit führenden Nullen? Wie gehst du mit gemischten Zeichenketten aus Zahlen und Texten um? Was passiert mit Zeichenketten, die Punkte und Komma enthalten? Was ist mit amerikanischer Schreibweise? Was ist mit 'ungültigen' Zeichenketten wie "1,3,4,5.70000,1234"?

Wenn du das Problem allgmein angehst, kommst du mit einfacher Zahlkonvertierung nicht hin.
 

ben_

Mitglied
Ob es überhaupt Sinn macht, Zeichenketten, die als Zahl interpretierbar sind, auch als Java Zahl zu interpretieren, hängt vom Kontext ab. Was passiert mit einer Zeichenkette aus sehr vielen Ziffern (z.B. über 100)?
Was machst du mit führenden Nullen? Wie gehst du mit gemischten Zeichenketten aus Zahlen und Texten um? Was passiert mit Zeichenketten, die Punkte und Komma enthalten? Was ist mit amerikanischer Schreibweise? Was ist mit 'ungültigen' Zeichenketten wie "1,3,4,5.70000,1234"?

Wenn du das Problem allgmein angehst, kommst du mit einfacher Zahlkonvertierung nicht hin.

Danke für den Hinweis. Aber die Zahlen liegen im korrekten Format vor. Da der User nur einen Key festlegt. Welches Value sich hinter dem Key verbirgt steuert eine Applikation. Dadurch sind die Werte korrekt und es muss keine "Falscheingabe" abgefangen werden.

Gruß,
ben
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
V Unbekannte Parameter Java Basics - Anfänger-Themen 1
M Unbekannte Nummer bei Aufruf der toString Methode Java Basics - Anfänger-Themen 3
S mir unbekannte for schleife Java Basics - Anfänger-Themen 3
D Erste Schritte Enum - das unbekannte Wesen Java Basics - Anfänger-Themen 3
H Wie kann ich in Java unbekannte Variablen in Gleichungen darstellen? Java Basics - Anfänger-Themen 3
J Aus einem String unbekannte zeichen filtern Java Basics - Anfänger-Themen 11
S Unbekannte Daten einlesen, speichern und in einem byte Array speichern Java Basics - Anfänger-Themen 3
V Unbekannte Klassen aus einem Package laden? Java Basics - Anfänger-Themen 4
P Unbekannte Fehlermeldung Java Basics - Anfänger-Themen 3
T KeyListener, Nullpointer und eine unbekannte Variable Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
T float soll durch schleife die größte mögliche Zahl herausfinden, Ausgabe ist aber "Infinity" Java Basics - Anfänger-Themen 1
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
G Bei dynamischer Arrayliste nach jeder Auswahl Zahl entfernen Java Basics - Anfänger-Themen 3
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
A Methoden Guten Tag , ich wollte so machen dass wenn meine frog an eine fly/bee geht dann an meine Tafel geht der zahl +1 hoch. Java Basics - Anfänger-Themen 2
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
S Vollkommene Zahl berechnen und ausgeben Java Basics - Anfänger-Themen 16
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
B 49-bit-zahl mit genau 6 Einsen bauen? Java Basics - Anfänger-Themen 21
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
M Java Ausgabe der höchsten Zahl Java Basics - Anfänger-Themen 14
Thomas06 Wie kann man mithilfe von boolean herausfinden ob eine zahl durch 5 und 7 teilbart ist ? Java Basics - Anfänger-Themen 7
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
M zahl raten Java Basics - Anfänger-Themen 1
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
I Zahl aufrunden (Zeit) Java Basics - Anfänger-Themen 43
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
TanTanIsTrying Durschnitt berechnen von eingegebener Zahl bis 1 heruntergezählt Java Basics - Anfänger-Themen 9
R Fortlaufende Zahl Java Basics - Anfänger-Themen 3
A Wenn eine Zahl durch 7 teilbar ist, soll statt der Zahl ein ‘*‘ angezeigt werden. java? Java Basics - Anfänger-Themen 47
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
B Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht Java Basics - Anfänger-Themen 4
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
HelpInneed Zahl. Java Basics - Anfänger-Themen 2
R Perfekte Zahl Java Basics - Anfänger-Themen 8
D Mittlerste Zahl Java Basics - Anfänger-Themen 17
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
Poppigescorn Häufigkeit einer zahl zählen Java Basics - Anfänger-Themen 5
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
Poppigescorn scan.nextInt() wiederholen bis eine Zahl eingeben wird Java Basics - Anfänger-Themen 7
J Verdoppeln einer Zahl (in dem Fall Münzen) Java Basics - Anfänger-Themen 4
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
T Zahl in Array ersetzen Java Basics - Anfänger-Themen 2
Abraham42 Prozentsatz einer Zahl mehrmals Java Basics - Anfänger-Themen 2
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
Kingamadeus2000 Anzahl der Ziffern der kürzesten Zahl aus einem zurückliefern Java Basics - Anfänger-Themen 1
V Beliebige Dreistellige Zahl Teiler finden Java Basics - Anfänger-Themen 4
newcomerJava Nach doppelter Zahl eine Ausgabe Java Basics - Anfänger-Themen 10
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
S Zahl eingeben Java Basics - Anfänger-Themen 8
A Java . punkt neben einer Zahl. Java Basics - Anfänger-Themen 1
F Eine Zahl mit Arrays vergleichen Java Basics - Anfänger-Themen 7
J Die größte Zahl anzeigen Java Basics - Anfänger-Themen 19
V Array auf eine Zahl durchsuchen Java Basics - Anfänger-Themen 15
X Nach einem Bruch testen ob es eine ganze Zahl ist Java Basics - Anfänger-Themen 6
L Erhöhung der Zahl Java Basics - Anfänger-Themen 3
F Negative Zahl erzwingen Java Basics - Anfänger-Themen 3
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
T Eulersche Zahl e Java Basics - Anfänger-Themen 5
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
B Eine ganze Zahl zerlegen. Java Basics - Anfänger-Themen 4
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
I Wie viele 1 an Bits hat die Zahl x? Java Basics - Anfänger-Themen 5
A Gewürfelte Zahl ausgeben Java Basics - Anfänger-Themen 10
M Rationale Zahl erkennen - Kurze Frage zum Restwert nach Division Java Basics - Anfänger-Themen 3
A Überprüfen, ober eine Zahl Ziffer enthält Java Basics - Anfänger-Themen 12
O Markoff-Zahl Java Basics - Anfänger-Themen 22
B Datenbank, aktuelle Ende als Zahl an Label übergeben Java Basics - Anfänger-Themen 7
L 10-Stellige Zahl hochzählen lassen Java Basics - Anfänger-Themen 1
H String und Zahl Java Basics - Anfänger-Themen 10
R Zahl 1 bis 100 erraten Java Basics - Anfänger-Themen 12
Y Konkrete Hilfe gesucht - Anzahl der Stellen einer eingegebenen Zahl überprüfen Java Basics - Anfänger-Themen 5
J Button klick bei eine bestimmten Zahl Java Basics - Anfänger-Themen 8
B Zahl in String abspeichern und später berechnen Java Basics - Anfänger-Themen 15
H OOP eine Zahl immer weiter durch 2 teilen Java Basics - Anfänger-Themen 15
J Für jeden Buchstaben eine Zahl Java Basics - Anfänger-Themen 1
H Würfelspiel, stop bei gleicher Zahl Java Basics - Anfänger-Themen 4
B Array - die Häufigkeit der Zahl zählen Java Basics - Anfänger-Themen 9
I Erste Schritte Testen, ob eine Zahl eine Primzahl ist Java Basics - Anfänger-Themen 8
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
I Eulersche Zahl Java Basics - Anfänger-Themen 6
F Produkt d. Ziffern einer Zahl..?! Java Basics - Anfänger-Themen 5
J Die Zahl herausfinden die durch 2 - 30 Teilbar ist... Java Basics - Anfänger-Themen 17
A Ungeordnetes Array ordnen, Zahl einlesen und einordnen Java Basics - Anfänger-Themen 23
A Rechnen mit Text und Zahl Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben