作为作业,我必须用 java 编写一个程序,将用户输入的二进制数 (n) 转换为十进制数。我不被允许使用任何作弊功能和东西。这是我到目前为止的静态方法的代码:
public static int binarytodecimal(String n) {
int answer=0;
int digit=0;
int multiplier=1;
char index=n.charAt(digit);
int length=n.length();
while (index=='0' || index=='1' && digit<=length) {
if (index=='1') {
answer+=multiplier;
multiplier*=2;
digit+=1;
}
else {
multiplier*=2;
digit+=1;
}
}
return answer;
}
例如,如果 n 为 1,当答案应该为 1 时,我却一直得到 3。我不确定我哪里出错了。
最佳答案
首先,您应该以反向模式迭代 n (测试类似 n="1101"的内容,您就会看到),然后在循环内读取每个位置的位
public static int binarytodecimal(String n) {
int answer = 0;
int digit = n.length();
int multiplier = 1;
while (digit > 0) {
char index = n.charAt(digit - 1);
if (index == '1') {
answer += multiplier;
multiplier *= 2;
digit--;
} else {
multiplier *= 2;
digit--;
}
}
return answer;
}
关于java - 在将二进制转换为十进制的程序中不断得到错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58361007/