我正在做一个赋值,我必须使用递归将整数转换为十六进制字符串。我必须使用返回字符串值的方法来执行此操作。我试图将我在纸上使用的方法转换为代码,它运行得很好:
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方法中使用的前两个示例,但我无法将其显示为零。有没有办法让它显示零而不需要修改太多?我已经讨论了一段时间了,如果不在每个其他数字之前添加至少一个零,我就无法想办法做到这一点。 任何帮助将不胜感激。
答案 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;