使用递归将int转换为十六进制字符串

时间:2014-11-14 20:49:52

标签: java recursion type-conversion

我正在做一个赋值,我必须使用递归将整数转换为十六进制字符串。我必须使用返回字符串值的方法来执行此操作。我试图将我在纸上使用的方法转换为代码,它运行得很好:

public class ItH {
private static String intToHex(int n) {
    int temp = n % 16;
    String digit = "";

    if (temp < 10) digit += temp;
    if (temp > 9) {
        switch (temp) {
            case 10: digit="A"; break;
            case 11: digit="B"; break;
            case 12: digit="C"; break;
            case 13: digit="D"; break;
            case 14: digit="E"; break;
            case 15: digit="F"; break;
        }
    }
    if (n > 0) return intToHex((n-temp)/16) + digit;
    return "";
}

public static void main(String[] args) {
    System.out.println(intToHex(1234));
    System.out.println(intToHex(257));
    System.out.println(intToHex(0));
}


}

它适用于main方法中使用的前两个示例,但我无法将其显示为零。有没有办法让它显示零而不需要修改太多?我已经讨论了一段时间了,如果不在每个其他数字之前添加至少一个零,我就无法想办法做到这一点。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

这个怎么样:

private static String intToHex(int n) {
    int temp = n % 16;
    String digit = "";

    if (temp < 10) digit += temp;
    if (temp > 9) {
        switch (temp) {
            case 10: digit="A"; break;
            case 11: digit="B"; break;
            case 12: digit="C"; break;
            case 13: digit="D"; break;
            case 14: digit="E"; break;
            case 15: digit="F"; break;
        }
    }
    if ( (n-temp)/16 == 0 ) return digit;
    if (n > 0) return intToHex((n-temp)/16) + digit;
    return "";
}

public static void main(String[] args) {
    System.out.println(intToHex(1234));
    System.out.println(intToHex(257));
    System.out.println(intToHex(0));
}

只需添加额外的if语句,

    if ( (n-temp)/16 == 0 ) return digit;