ServerPlugin String in ints aufteilen

Dieses Thema im Forum "Programmierung" wurde erstellt von HardcorePvP, 4. Juli 2015.

  1. HardcorePvP
    Offline

    HardcorePvP

    Registriert seit:
    3. September 2012
    Beiträge:
    92
    Ort:
    München
    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
     
    #1
  2. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Hallo,

    probier mal folgendes:
    Code (Text):
    1. String str = "012345";
    2. for (int i=0; i<str.length(); i++) {
    3.    int zahl = Integer.valueOf(str.charAt(i));
    4.    Sysout(zahl);
    5. }
    PS: Ist ungetestet und auf dem Handy geschrieben ;)
     
    #2
  3. HardcorePvP
    Offline

    HardcorePvP

    Registriert seit:
    3. September 2012
    Beiträge:
    92
    Ort:
    München
    Minecraft:
    blooditor
    Danke, funktioniert mehr oder weniger... es kam immer die Zahl+48 raus deswegen einfach immer 48 abziehen dann past es ;)
     
    #3
  4. MrPyro13
    Offline

    MrPyro13

    Registriert seit:
    29. April 2013
    Beiträge:
    829
    Minecraft:
    MrPyro13
    Woher kommen die 48?
    Könntet du mir hier oder per PN mal den Codeabschnitt schicken?
     
    #4
  5. ShareLock
    Offline

    ShareLock

    Registriert seit:
    2. November 2011
    Beiträge:
    70
    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:
    Code (Java):
    1. String str = "0123456789";
    2. for (int i = 0; i < str.length(); i++) {
    3.     int ziffer = Integer.parseInt(str.substring(i, i + 1));
    4.     System.out.println(str.charAt(i) + ":" + ziffer);
    5. }
    Alternativ natürlich auch:
    Code (Java):
    1. String s = "0123456789";
    2. for (int i = 0; i < s.length(); i++) {
    3.     System.out.println(s.charAt(i) + ":" + (s.charAt(i) - 48));
    4. }
    Mein persönlicher Favorit ist jedoch mit den neuen Lambda Ausdrücken in Java8
    Code (Java):
    1. "0123456789".chars().forEach(v -> {
    2.     v -= 48;
    3.     System.out.println(v);
    4.     // V weiter verwenden...
    5. });
    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:
    [​IMG]

    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.
     
    #5
  6. pasce1998
    Offline

    pasce1998

    Registriert seit:
    20. April 2014
    Beiträge:
    21
    Ort:
    Hessen
    Minecraft:
    pasce1998
    Code (Text):
    1.  
    2. String str = "0123456789";
    3.  
    4. for (int i = 0; i < str.length (); i++){
    5.   int ziffer = Character.digit(code.charAt(i), 10);
    6.   System.out.println(ziffer);
    7. }
    8.  
    Das sollte auch funktionieren ^^
     
    #6
    ShareLock gefällt das.
  7. HardcorePvP
    Offline

    HardcorePvP

    Registriert seit:
    3. September 2012
    Beiträge:
    92
    Ort:
    München
    Minecraft:
    blooditor
    Danke für die Erklärung, ShareLock ;)
     
    #7