String bestehend aus Ziffern in Zahl verwandeln

eclipseworker

Bekanntes Mitglied
Ich habe einen String der aus lauter Ziffern besteht. Wie kann ich ihn eine Zahl umwandeln?
z.B. "124" soll zu 124 werden. Meine Funktion liefert seltsame Werte:
Java:
    public int stringToNum(String a){
        int r=0;
        for(int i=a.length()-1; i>=0; i--){
            char c=a.charAt(i);
            switch(c){
                case '1': r+=1*((int)Math.pow(i, 10));break;
                case '2': r+=2*((int)Math.pow(i, 10));break;
                case '3': r+=3*((int)Math.pow(i, 10));break;
                case '4': r+=4*((int)Math.pow(i, 10));break;
                case '5': r+=5*((int)Math.pow(i, 10));break;
                case '6': r+=6*((int)Math.pow(i, 10));break;
                case '7': r+=7*((int)Math.pow(i, 10));break;
                case '8': r+=8*((int)Math.pow(i, 10));break;
                case '9': r+=9*((int)Math.pow(i, 10));break;
                default: r+=0;
            }
        }
        return r;
       
    }
Ich weiß schon, das es vermutlich an Math.pow und des unguten typen von double zu int liegt, aber wie soll ich sonst potenzieren? Uebrigens so etwas
Java:
int e=8*(int)Math.pow(10, 5);
funktioniert und e ist 800000 wie man es sich erwarten würde, aber wieso?
 
du solltest natürlich einfach die gegebenen methoden von java nutzen.
Aber der vollständigkeithalber:
Dein Code geht eben nicht, da du i^10
Nimm dir doch einfach mal ein Beispiel: 25
du rechnest also 2*0^10 + 5*1^10
Das ist natürlich totaler quatsch. Erstmal musst du 10^i rechnen, außerdem musst du die reihenfolge von i tauschen.
die 2 ist an Index 0 und 25 ist an Index 1. Für die korrekt berechnen benötigt man aber die umgekehrte reihenfolge:
ziffer * (int)Math.pow(10, a.length() - i -1)
 

Zurück
Oben