【发布时间】:2017-09-26 10:01:30
【问题描述】:
我一直在研究数字系统计算器(refer to my binary question) 现在我被困在十六进制部分。我一直在使用 switch 结构,但输出是这样的:
Enter Number: 165
Enter Base: 16
The answer: A105
实际答案应该是 A5,剩下的 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。
【问题讨论】:
-
为什么不只是
String output = Integer.toString(given, base)? -
@Andreas 我们应该使用基础知识,我们不允许使用方法或数组:(
-
是的,您的代码有问题。有几件事,但它很困惑,不清楚你为什么期望它起作用。除其他外,您在循环中打印十六进制数字 A-F,但任何小于该数字的数字都会 *add 输出(为什么?),然后仅在循环结束时打印。奇怪。
-
欢迎来到 Stack Overflow!请使用tour,环顾四周,并通读help center,尤其是How do I ask a good question? 和What topics can I ask about here?。 - 请添加Minimal, Complete, and Verifiable example。从您的示例代码中不清楚变量
output是什么类型 -
像往常一样,这里没有十进制,只有二进制。
标签: java numbers hex decimal system