• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

String in ints aufteilen

HardcorePvP

Kuhfänger
Registriert
3 September 2012
Beiträge
92
Diamanten
0
Minecraft
blooditor
Hallo,
ich möchte einen String, der zwei Zahlen beinhaltet (z.B "01" oder "23") in zwei ints umwandeln (also "0" und "1" bzw. "2" und "3"). Wie schaffe ich das?

Danke im Voraus!
MfG,
bloodi
 

MrPyro13

Workaholic
Registriert
29 April 2013
Beiträge
826
Diamanten
300
Minecraft
MrPyro13
Hallo,

probier mal folgendes:
Code:
String str = "012345";
for (int i=0; i<str.length(); i++) {
   int zahl = Integer.valueOf(str.charAt(i));
   Sysout(zahl);
}

PS: Ist ungetestet und auf dem Handy geschrieben ;)
 

ShareLock

Kuhfänger
Registriert
2 November 2011
Beiträge
66
Alter
58
Diamanten
0
Woher kommen die 48?
Ja, ja. Immer diese pseudo Programmierer, die nur für Bukkit programmieren können bzw. keine Ahnung von der zugrundeliegenden Technik haben.

Wenn man unbedingt alle Ziffern haben will, kann man obiges Script leicht korrigieren:
Java:
String str = "0123456789";
for (int i = 0; i < str.length(); i++) {
    int ziffer = Integer.parseInt(str.substring(i, i + 1));
    System.out.println(str.charAt(i) + ":" + ziffer);
}

Alternativ natürlich auch:
Java:
String s = "0123456789";
for (int i = 0; i < s.length(); i++) {
    System.out.println(s.charAt(i) + ":" + (s.charAt(i) - 48));
}

Mein persönlicher Favorit ist jedoch mit den neuen Lambda Ausdrücken in Java8
Java:
"0123456789".chars().forEach(v -> {
    v -= 48;
    System.out.println(v);
    // V weiter verwenden...
});

Natürlich ist es auch möglich einfach 48 abzuziehen(s.o.). Warum 48? Nunja. Ein Character ist auch ein Integer. Dieser befindet sich innerhalb der ASCII tabelle:
d25c48b18b.png


Siehe da: In Dezimal ist die 48 eine null. 48-48 = 0.
Gleiches gilt für die Nachfolger.

PS: Integer.valueOf erzeugt im übrigen einen Integer, sodass wieder ein boxing stattfindet. Jedesmal.
 
Zuletzt bearbeitet von einem Moderator:
Oben