[英]Java Decimal to Hexadecimal using the basics
我一直在研究数字系统计算器(请参阅我的二进制问题) ,现在我被困在十六进制部分。 我一直在使用开关结构,但输出如下:
Enter Number: 165
Enter Base: 16
The answer: A105
实际答案应该是A5 tho,剩下的10就是A。
这是我的代码:
int given = 0, base = 0, remainder = 0;
String output = "";
if (base == 2||base == 8){
while(given != 0){
remainder = given % base;
given /= base;
output = remainder + output;
}
System.out.println(output);
}
else if (base == 16){
while (given > 0){
remainder = given % base;
if (remainder <= 10){
System.out.print("");
}
switch(remainder){
case 10:System.out.print("A");break;
case 11:System.out.print("B");break;
case 12:System.out.print("C");break;
case 13:System.out.print("D");break;
case 14:System.out.print("E");break;
case 15:System.out.print("F");break;
}
given /= base;
output = remainder + output;
}
System.out.println(output);
}
我应该选择继续使用开关结构还是我的代码有问题?
编辑:为了清楚起见, output
变量将反转特定给定的值。 如果我有一个37作为十进制转换为二进制,它将输出101001 ,实际答案是100101 。
您正在打印从A到F的字母,并将其余部分添加到输出中。 您应该将字母添加到输出中,而不是打印它们:
while (given > 0){
remainder = given % base;
if (remainder >= 10){
switch(remainder){
case 10:output = "A" + output;break;
case 11:output = "B" + output;break;
case 12:output = "C" + output;break;
case 13:output = "D" + output;break;
case 14:output = "E" + output;break;
case 15:output = "F" + output;break;
}
} else {
output = remainder + output;
}
given /= base;
}
System.out.println(output);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.