【发布时间】:2020-10-01 20:21:39
【问题描述】:
我是计算机科学专业的一年级学生。这个问题已经被问过很多次了,我已经经历了这些。但我仍然无法在当前代码中找到需要修复的地方。我已经编写了将十进制转换为二进制的代码。以下是示例输入和输出。
示例输入
4
101
1111
00110
111111
样本输出
5
15
6
63
我理解二进制转换的概念。但是我无法输入指定数字的二进制值并且得到不正确的输出。我不能使用 Integer.parseInt。 下面是二进制到十进制的粗略转换练习。
Binary to Decimal
1 0 1 0 -binary
3 2 1 0 -power
2 2 2 2 -base
1*2^3 + 0*2^2 + 1*2^1 + 0*2^0
8 + 0 + 2 + 0 = 10
代码
public class No2_VonNeumanLovesBinary {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int numTotal, binaryNum, decimalNum = 0, remainder;
numTotal = s.nextInt();
for(int i = 0 ; i <= numTotal; i++){
// This is to get binaryNum input. However I am not getting the expected result.
binaryNum = s.nextInt();
while(binaryNum != 0){
remainder = binaryNum % 10;
decimalNum = decimalNum + (remainder * i);
i = i * 2;
binaryNum = binaryNum / 10;
}
System.out.println(decimalNum);
}
}
}
谢谢!
【问题讨论】:
-
在
(remainder + i)和i = i * 2中,您应该将i替换为完全不同的变量(我们称其为powerOfTwo,因为它就是...),您将设置它在while循环开始之前变为 1。 -
@KevinAnderson 您的意思是使用 Integer.parseInt(binaryNum, 2) 更改为基数 2?我不想使用它。在使用这个 Integer.parseInt 方法之前,我想先学习如何使用数学表达式的编码方式。谢谢。
-
@KevinAnderson 通过使用该方法,它相对简单。 for (int i = 1; i
-
不,你的想法是对的:隔离二进制数字,乘以二进制位值,添加到十进制数,然后前进到下一个二进制位值。问题是
i用于二进制位值是错误的:它已经被用作输入计数器。你需要一个完全不同的变量。
标签: java while-loop binary decimal interbase-2009