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:
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:
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
"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:
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.