Methoden Von Dezimal zu Hexadezimal Methode toHex

Ostkreuz

Aktives Mitglied
Aufgabe : Schreiben Sie eine Methode toHex, die für einen ganzzahligen Eingabewert (int) die hexadezimale Repräsentation als String berechnet. Entwickeln Sie Ihre Methode gemäß des gegebenen Dokumentationskommentars.
Frage: Was ist an meinem Code falsch/wieso funktioniert es nicht?

Mein Code:
public class Hex{

/**
* Berechnet die hexadezimale Darstellung der Zahl und gibt diese als String zurück
*
* @param input Die Zahl (int), die umgerechnet werden soll
* @Return die hexadezimale Darstellung als String
*/
private static String toHex(int input) {
String hex = "";
int i = 0;

if (input == 0) {
return hex;
} else {
if ((input % 16) == 1) {
hex = "1";
} else if ((input % 16) == 2) {
hex = "2";
} else if ((input % 16) == 3) {
hex = "3";
} else if ((input % 16) == 4) {
hex = "4";
} else if ((input % 16) == 5) {
hex = "5";
} else if ((input % 16) == 6) {
hex = "6";
} else if ((input % 16) == 7) {
hex = "7";
} else if ((input % 16) == 8) {
hex = "8";
} else if ((input % 16) == 9) {
hex = "9";
} else if ((input % 16) == 10) {
hex = "10";
} else if ((input % 16) == 11) {
hex = "B";
} else if ((input % 16) == 12) {
hex = "C";
} else if ((input % 16) == 13) {
hex = "D";
} else if ((input % 16) == 14) {
hex = "E";
} else if ((input % 16) == 15) {
hex = "F";
} else {
i = (input % 16);
hex += i;
}

return toHex(input / 16) + hex;
}
}
}
 
Hast Du die Methode einfach mal etwas getestet? Was kommt denn bei diversen Werten raus?

Probiere es doch einfach mal für diverse Werte. Dabei ist wichtig, auch Werte zu testen, die an den Grenzen sind, also z.B. was kommt bei 0 bei Dir raus?
 
Und evtl. schon jetzt ein paar Hinweise: Dein Code lässt sich bestimmt noch gut umschreiben.
a) Du machst die Berechnung input%16 sehr oft. Evtl. kann man das nur einmal berechnen.
b) die Ziffer 0 kommt wie in den String? Wie kommen die Ziffern 1...9 in den String? Evtl. lässt sich das ja etwas angleichen.
c) Bei den A-F wird es etwas komplexer - da ist die Frage, wie weit Du den Datentyp char schon kennst - der unter dem Strich auch nur eine 16 Bit Zahl ist.
 

Zurück
Oben