Stringbuffer problem

  • Stringbuffer problem

    Hi,


    ich möchte aus einem Stringbuffer, der z.b. so aussieht: AAB7C8
    z.b. die 4. ziffer (-->7) in eine int-variable speichern.

    Wie kann ich das am besten machen?
    Habe bisher etwas in der richtung probiert.


    int i = stringbuffer.charAt(x); wobei dann eben x die richtige stelle ist.
    Allerdings scheint er dann nur den unicode des "chars" an dieser stelle in die int-variable zu speichern und nicht die zahl an sich ;/


    Hoffe ihr könnt mir da weiterhelfen
  • Hi

    Hab zwar noch nicht so ganz dein Problem verstanden, aber mit

    Quellcode

    1. Integer.parseInt(arg0)

    kannst du aus nem String ein int machen.
    Dran denken, wenn der String keine Zahl ist, wird ne Exception geworfen

    Wenn du aber charAt(x) verwenden willst, kann man z.B. ne switch-Anweisung verwenden

    Quellcode

    1. switch(s.charAt(3)){
    2. case 48: i = 0; break;
    3. case 49: i = 1; break;
    4. case 50: i = 2; break;
    5. ....
    6. default: i = -1; break;
    7. }


    Ist deine Zahl immer einstellig?
    mfg
  • hm, ja das mit dem Integer.parseInt() hab ich schon probiert, da kommt bei mir dann aber immer eine Fehlermeldung.


    Hab das folgendermaßen versucht:
    In meiner Methode möchte ich einen String nach zahlen (sind immer einzelne einstellige zahlen) durchsuchen.
    Also hab ich mir ne Schleife gebaut, die den String zeichen für zeichen durchgeht und dann mit Character.isDigit() schaut, obs ne Zahl ist.
    wenn ja, dann soll die Zahl in "temp" (int-variable) abgespeichert werden, damit ich danach in einer neuen schleife genau "temp"-mal etwas machen kann.

    ein String "AAB4C5" soll dann am Ende so aussehen: "AABBBBCCCCC"
    Hoffe, das macht es etwas einfacher.

    Quellcode

    1. static String decode(String ostring) {
    2. StringBuffer sBuf = new StringBuffer(ostring); // orig. string in stringbuffer umwandeln --> besser zum bearbeiten
    3. char c;
    4. int temp;
    5. for(int i=0;i<sBuf.length();i++) {
    6. c=sBuf.charAt(i);
    7. if(Character.isDigit(c)) {
    8. temp = Integer.parseInt(c); // soll die zahl, an der stelle i aus dem string in temp speichern
    9. for(int k=0;k<temp-1;k++) macht etwas (unwichtig);
    10. }
    11. else {
    12. rBuf.append(c); // auch unwichtig für das problem
    13. }
    14. } //for
    Alles anzeigen




    Als Fehlermeldung bei dem interger.parseint() kommt das hier:


    Exception in thread "main" java.lang.NumberFormatException: For input string: "c"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
  • huhu, erstmap thx, dass du mir den link zu deinem code gegeben hast.
    hab meinen code dann ein wenig verändert. also auch die zahl erst in einem string gespeichert und dann in der schleife dann parseint von dem string gemacht und jetzt gehts endlich :D


    aber ich verstehe nicht so ganz, wieso es nicht 100 mal (wieso gerade 100?) laufen sollte?

    Eigentlich sollte es doch ganz einfach so oft das ganze machen, wie der string lang ist, und mehr braucht man ja auch nicht, oder hab ich das ganz falsch verstanden? ^^


    also nochmal thx :)