我有一位教授不允许我使用简单的方法将十进制转换为其他基数(二进制、十六进制和八进制)。我必须创建自己的方法来做到这一点。
public static String base(int num, int base)
{
String output = "";
while (num != 0)
{
int value = num % base;
output = getDigit(value) + output;
num = num / base;
}
return output;
}
public static char getDigit(char n)
{
{
switch (n)
{
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
default:
System.out.println("Wrong key inputted!");
}
}
return n;
请注意,我犯了很多错误。我不知道从这里到哪里去。
Java的Integer类具有返回字符串的内置函数,用于十六进制toHexString、二进制toBinaryString和八进制toOctalString。希望这能有所帮助。。
更新
您的逻辑是正确的,可以工作,但是代码中几乎没有错误,请查看:
public class Convert {
public static String base(int num, int base)
{
String output = "";
while (num != 0)
{
int value = num % base;
output = Convert.getDigit(value) + output;
num = num / base;
}
return output;
}
public static char getDigit(int n)
{
switch (n)
{
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
default:
System.out.println("Wrong key inputted!");
}
return ' ';
}
public static void main(String ...args){
System.out.println(Convert.base(Integer.parseInt(args[0]),Integer.parseInt(args[1])));
}
}