就像标题所说,我做了一个小函数,它从用户的 1 和 0 字符串中获取,输出应该是它的十进制数,但由于某种原因我得到了错误的答案,希望你能帮助我找到问题。
public class ToDecimal{
public static void main(String[] args){
String string = args[0];
int length = string.length();
int power = length - 1;
int decimal = 0;
while(length > 0){
if (string.charAt(length - 1) == '1'){
decimal = decimal + (int)(Math.pow(2, length - 1));
} else if (string.charAt(length - 1) == '0'){
} else {
System.out.println("Wrong string spelling...");
}
length--;
}
System.out.println(decimal);
}
}
最佳答案
您正在按倒序应用指数。也就是说,在第一个循环中,您查看最后一个字符,但应用最大指数 length - 1
,第一个字符得到指数 0
.
使用power
作为指数而不是 length - 1
,并增加 power
在 while
的末尾循环。
decimal = decimal + (int)(Math.pow(2, power));
和
length--;
power++;
}
关于java - 二进制到十进制转换器函数给出了错误的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33509354/