Int zu Hexadezimal - Rekursive Methode

Sourcecode

Neues Mitglied
Hallo,

ich muss eine ganze Zahl mithilfe einer rekursiven Methode in ihre jeweilige hexadezimale Notation umwandeln (also ohne API-Methode). Das funktioniert mit folgendem Code auch sehr gut:
Java:
public class Hexa {

    private static String zahlInHex(int n) {
        String hex = "";
        int i = 0;

        if (n == 0) {
            return hex;
        } else {
            if ((n % 16) == 10) {
                hex = "A";
            } else if ((n % 16) == 11) {
                hex = "B";
            } else if ((n % 16) == 12) {
                hex = "C";
            } else if ((n % 16) == 13) {
                hex = "D";
            } else if ((n % 16) == 14) {
                hex = "E";
            } else if ((n % 16) == 15) {
                hex = "F";
            } else {
                i = (n % 16);
                hex += i;
            }

            return zahlInHex(n / 16) + hex;
        }
    }


    public static void main(String[] args) {

        System.out.println(zahlInHex(324));
    }
}
Mein Problem ist aber, dass ich es nicht schaffe, dass die Methode bei einer 0 als Eingabe auch 0 als Ergebnis zurückliefert. Alle anderen Zahlen werden korrekt umgewandelt. Wenn ich (if n == 0).. entferne wird immer ein String mit einer 0 vorne zurückgeliefert (also z.B. (324)[SUB]10[/SUB] = (0144)[SUB]16[/SUB]).

Jemand eine Idee wie ich das umgehen kann?

Vielen Dank im Voraus!
 
Zuletzt bearbeitet:
Einfach:
Bei der Rückgabe abfragen, ob der (Rückgabestring.length > 1) und (erstes Zeichen=='0'), dann entfernen der '0' und Rest zurückgeben.

Schöner:
Für n=0 "0" zurückgeben, und
nur rekursiv unter-aufrufen, wenn n>15 ist.
 
Zuletzt bearbeitet:
Einfach:
Bei der Rückgabe abfragen, ob der (Rückgabestring.length > 1) und (erstes Zeichen=='0'), dann entfernen der '0' und Rest zurückgeben.

Schöner:
Für n=0 "0" zurückgeben, und
nur rekursiv unter-aufrufen, wenn n>15 ist.

Mit dieser Idee könnte die Methode so aussehen:

Java:
public class Hexa {

	private static final String[] mapToString = { "0", "1", "2", "3", "4", "5",
			"6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };

	private static String zahlInHex(int n) {
		if (n > 15){
			return zahlInHex(n / 16) + mapToString[n % 16];
		}else{
			return mapToString[n % 16];
		}
	}

	public static void main(String[] args) {
		System.out.println(zahlInHex(255));
	}
}
 

Zurück
Oben