Hallo,
zwecks Übung sollen wir für die Schule ein Programm schreiben dass Dezimalzahlen in ein beliebiges anderes System umrechnet. Auf dem Papier kein Problem, allerdings stehe ich gerade auf dem Schlauch und komm ums verrekcne nicht auf die richtige Abbruchbedingung:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public static String convert(long number, long base){ String tmp=""; long remain = 0; while (number / base > 0 ){ //Rest = Zahl Modulo Basis remain = number % base; //Zahl = Zahl geteilt Basis number = number / base; // tmp = Ergbnis, in falscher Reihenfolge tmp = tmp + remain; } |
convert (127,8) liefert 77 anstatt 177. Liegt an der Abbruchbedingung in der while Schleife (denke ich) aber ich komm einfach nicht drauf.
Mfg und Danke
EDIT: Habe es jetzt so gelöst
public static String convert(long number, long base){ String tmp=""; String result =""; long remain = 0; boolean next = true; while (next){ remain = number % base; number = number / base; tmp = tmp + remain; if (number/base ==0){ remain = number % base; tmp = tmp + remain; next = false; } } StringBuilder sb = new StringBuilder(tmp); result = sb.reverse().toString(); return result; }