对于家庭作业,我必须用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。我不确定我哪里出错了。
答案 0 :(得分:0)
首先,您应该以反向模式遍历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;
}