我试着编写一个程序,将二进制数转换为十进制数,但是我遇到了一些错误,我无法弄清楚我哪里出错了。
// Takes exponent from the user and calculates 2 ** exponent
int power2(int exponent) {
result = 2 ** exponent
return result
}
// Converts binary number to decimal
int binary2decimal(String binary) {
result = 0
count = 0
for (i = binary.length(); i-- > 0;) {
int d = Integer.parseInt(binary.charAt(i))
if (d == 1) {
result = result + power2(count)
}
count ++
}
return result
}
binary2decimal("101110")
答案 0 :(得分:1)
更改
int d = Integer.parseInt(binary.charAt(i))
到
int d = Integer.parseInt("${binary[i]}")
它会起作用。
您的另一种实现方式是:
int binary2decimal2(String binary) {
binary.reverse()
.toList()
.indexed()
.collect { Integer idx, String val -> Integer.parseInt(val) * (2 ** idx)}.sum()
}
答案 1 :(得分:0)
假设您希望获得干净解决方案的最短路径,请使用:
Integer.parseInt(String base2num, int radix)
,其中radix = 2
。
请参阅http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String,%20int)