使用递归将int转换为十六进制字符串
问题描述:
我正在做一个赋值,我必须使用递归将整数转换为十六进制字符串。我必须使用返回字符串值的方法来执行此操作。我试图把我使用的纸张为代码的方法和它工作得很好:使用递归将int转换为十六进制字符串
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方法中使用的前两个例子,但我不能得到它显示零。有没有办法让它显示零而不会修改太多?我已经讨论了一段时间了,我无法想出一个方法来做到这一点,而不会在每个其他数字之前至少添加一个零。 任何帮助,将不胜感激。
答
如何:
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;
有时候,你有,你所要做的除了“直”算法一些特殊情况。在这种情况下,我会在返回给用户之前检查最后一个字符串。如果它是空的,将其设置为单个“0”。 – markspace 2014-11-14 20:53:54