Konvertieren von Dezimal zu Hex verwenden Rekursive Java-Methode

Ich brauche, um eine rekursive Methode, die wandelt eine dezimal-in hexadezimal.
Ich kann nicht mit Integer.toHexString.
EDIT:ich versuchte diesen code, aber es funktioniert nicht richtig

public static String Hexa(String s) {
    String result = "";
    int n = Integer.parseInt(s);
    int remainder = n % 16;

    if (n == 0) {
        return Integer.toString(0);
    } else {
        switch (remainder) {
            case 10:
                result = "A" + result;
                break;
            case 11:
                result = "B" + result;
                break;
            case 12:
                result = "C" + result;
                break;
            case 13:
                result = "D" + result;
                break;
            case 14:
                result = "E" + result;
                break;
            case 15:
                result = "F" + result;
                break;
            default: result = Integer.toString(n/16) + result; break;
        }
        System.out.println(result);
        return Hexa(Integer.toString(n/16)) + result;
    }
}

Bearbeiten:
Geändert default Fall und die if (n == 0) loop return-Anweisung und es funktioniert wunderbar jetzt.

neuen code:

 public static String Hexa(String s) {
        String result = "";
        int n = Integer.parseInt(s);
        int remainder = n % 16;

        if (n == 0) {
            return "";
        } else {
            switch (remainder) {
                case 10:
                    result = "A";
                    break;
                case 11:
                    result = "B";
                    break;
                case 12:
                    result = "C";
                    break;
                case 13:
                    result = "D";
                    break;
                case 14:
                    result = "E";
                    break;
                case 15:
                    result = "F";
                    break;
                default:
                    result = remainder + result;
                    break;
            }
            return Hexa(Integer.toString(n / 16)) + result;
        }
    }
  • also, was haben Sie versucht?
  • Integer.toHexString nicht konvertieren dezimal zu hexadezimal, sowieso 🙂
  • Du bist Verkettung zweimal, das ist, warum es nicht richtig funktioniert. Mischen Sie, bis die iteration mit Rekursion.
  • So führen Sie eine Suche für: " + result" Ersetzen mit: <nothing> und anwenden, die alle, aber das Letzte match.
  • Bemerken Sie in Ihrem rekursiven Aufruf, die Sie konvertieren Sie Ihre ganze Zahl in eine Zeichenfolge, um Sie zu konvertieren zurück an den Anfang deiner Funktion?
  • Bitte fügen Sie ein Beispiel, was doesn't work properly bedeutet
  • Ich könnte sein, dass ich Mixe zu Stopfen, ich habe gerade angefangen java zu lernen für die Hochschule und dies ist eine Zuordnung, die ich zu tun habe. ich habe eine funktionierende Sache, aber das ist nicht rekursiv
  • wenn ich in 1234 sollte es wieder 4D2, aber stattdessen gibt 00D77
  • Die Standardeinstellung für den Schalter scheint nicht richtig zu mir...versuchen default: result = remainder + result?
  • das klappte auch, aber ich bekomme 04D2 statt 4D2, keine Ahnung?
  • Für Ihre Basis-Fall, sind Sie wieder, führende Nullen als "0", während ich glaube, Sie will einfach nichts zurück (d.h., den leeren string)
  • macht Sinn, habe es ausprobiert und es funktioniert! vielen Dank Euch allen!

InformationsquelleAutor Liam de Haas | 2013-11-22
Schreibe einen Kommentar