Konvertieren von int zu char-array in Java
Ich versuche zum konvertieren einer integer Zahl in ein array von chars ohne Hilfe von String-Operationen.
Mein Versuch war:
int number = 12;
char[] test = Character.toChars(number);
for (char c : test)
System.out.println(c);
Gibt es keine Ausgabe, und mir geben sollte:
'1'
'2'
Wie kann ich dieses Problem beheben? Danke!
Gehen Sie durch die Umsetzung von
Warum die Beschränkung auf
Sie irren über das, was
Wahrscheinlich Hausaufgaben.
Ahh! Lehrer bereiten Sie für die Reale Welt, wo dies nie passiert. Nicht mehr sagen.
Integer.toString()
und die damit verbundenen Methoden.Warum die Beschränkung auf
String
Operationen? In meiner langen Karriere, hat niemand jemals legt eine Beschränkung auf die mir.Sie irren über das, was
Character.toChars()
Methode eigentlich funktioniert. Es "Wandelt das angegebene Zeichen (Unicode code point), um die UTF-16-Darstellung gespeichert in ein char-array." Seine int
parameter gibt "ein Unicode code point"Wahrscheinlich Hausaufgaben.
Ahh! Lehrer bereiten Sie für die Reale Welt, wo dies nie passiert. Nicht mehr sagen.
InformationsquelleAutor Fertk Omr | 2013-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Probieren Sie etwas wie dieses:
Beachten Sie, dass
floor(log10(n) + 1)
gibt die Anzahl der Ziffern inn
. Auch, wenn Sie wollen, bewahren Sie Ihre original-Nummer, eine Kopie erstellen und verwenden, die in derfor
-loop statt.Beachten Sie auch, dass Sie möglicherweise anpassen müssen, um den obigen code, wenn Sie planen, auch die Verarbeitung von nicht-positive ganze zahlen sind. Die Allgemeine Idee, sollten jedoch die gleichen bleiben.
log10
arbeitet mit doubles, und könnte daher zu Rundungsfehlern in einigen Implementierungen. Dies impliziert, dass die Gefahr besteht, dass das array nicht lang genug sein, um zu speichern alle Zeichen, die in einigen Fällen. Also diese Antwort ist nicht so gut wie eine Antwort, dass funktioniert nur mit Ganzzahlen, Zeichenfolgen und Zeichen (wie die drei anderen Antworten hier).Die Umsetzung sollte sein, dass, definiert durch docs. Für Rundungsfehler, geben Sie bitte ein Beispiel für einen solchen Fall (d.h. eine positive
number
für die dieser nicht funktioniert).Ich denke, es ist sicher anzunehmen, dass die OP wird unter Verwendung der standard -
java.lang.Math
.Die docs für
java.lang.Math
sagen, dass das Ergebnis innerhalb von 1 ULP der richtigen Antwort. Das ist nicht gut genug.Ok, also hast du ein Beispiel, für das dies nicht funktioniert? Ich selbst bin gespannt, zu sehen.
InformationsquelleAutor arshajii
char[] test = Integer.toString(number).toCharArray();
Ich verlasse diese hier, weil Sie eine Zukunft, SO dass Benutzer können auf diese Frage, während der Suche nach einem Weg, dies zu tun die gleiche Sache, aber ohne die bizarre Einschränkung. In Ihre Fall, das ist eine hilfreiche Antwort, obwohl ich frei zugeben, dass es erfüllt nicht die OP unmittelbaren Bedürfnisse.
InformationsquelleAutor Dawood ibn Kareem
Extrahieren der einzelnen Ziffer der Zahl, wandeln Sie es in ein Zeichen, indem Sie die '0'), und speichern Sie diese in ein char-array. Lassen Sie uns wissen, was Sie versucht haben.
Ein
char
ist einUTF-16 code unit
. Dass nicht ändern kann.Ich glaube, es gibt eine solche Garantie - Java definiert, welche Codierung verwendet für seine Charaktere. Aber für die Lesbarkeit wäre es besser, Sie '0' (der Charakter), statt 48.
Absolut, ich habe noch nie gehört, java char weicht von ASCII
Auch wenn das vielleicht immer technisch korrekt, es ist immer noch nicht eine saubere Lösung.
InformationsquelleAutor nj-ath
+1 für @arshajii code
log10(n) + 1
ist etwas neues für mich. Wenn Sie beabsichtigen, Sie zu verwendenVectors
stattarrays
Sie können auch Folgen Sie dieser Prozedur(Aber hat der Vektor-Elemente in umgekehrter Reihenfolge), in dem Sie nie brauchen, um zu berechnen, die Größe der Zahl selbstInformationsquelleAutor Prateek