java二进制到十进制
我很难将二进制转换成十进制。我们必须使用一个函数进行转换,并手动进行,而不是使用预定义的函数。这就是我到目前为止所拥有的,我知道这是一个烂摊子,但我被困在如何修复它。谢谢
import java.util.Scanner;
public class BinaryConversion {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String inString;
int decimal;
System.out.println("Enter a binary number: ");
inString = input.nextLine();
while (!"-1".equals(inString)) {
int i;
int binaryLength;
binaryLength = inString.length();
public static int binaryToDecimal (String binaryString) {
for (i = binaryLength - 1, decimal = 0; i >= 0; i--) {
if (inString.charAt(i) == '1')
decimal = decimal + Math.pow(2,inString.length() - 1 - i);
}
return (int) decimal;
}
System.out.println(decimal);
System.out.println("Enter a binary number: ");
inString = input.nextLine();
}
System.out.println("All set !");
}
}
# 1 楼答案
当我清理你的代码时,它工作得很好-
输出
# 2 楼答案
要使用函数,根据赋值要求,必须在主方法之外编写函数,然后包含一条调用函数的语句。因此,将这个移到上面表示
public static void main
的行上:此外,每个函数或方法(包括
main
)都有自己使用的变量,称为局部变量;但是每个函数使用的局部变量都是它自己的独立副本。因此,上述函数将无法使用属于main
的binaryLength
或decimal
变量。您需要在binaryToDecimal
中声明它们:此外,此函数将无法访问
main
的inString
,但其思想是您已经为函数提供了要使用的字符串,它称为binaryString
。因此,将函数中的inString
更改为binaryString
:还要注意
binaryLength
和decimal
变量与main
中同名的变量完全无关。这意味着,当您在main
中分配binaryLength
时,这对binaryToDecimal
中的binaryLength
没有影响。您需要在函数中指定它。将int binaryLength;
更改为最后,为了使用函数,
main
需要调用它。将其放入main
函数中:当
main
执行该操作时,它将调用该函数并告诉它使用inString
。不过,该函数将调用binaryString
。函数将返回一个结果,然后main
将该结果分配给变量decimal
——这意味着属于main
的局部变量decimal
,因为上面的语句在main
内我不知道这是否能让你的整个计划奏效。(应该,但我不确定。)但我只是想解释一下如何使用函数的细节
# 3 楼答案
令人困惑的是
Math.pow
及其复杂的参数,在这些参数中很容易出现一个接一个的错误然而,如果我们有一个以10为基数的数字,比如
123
它的价值是
((0*10)+1)*10+2)*10+3
这看起来很复杂,但请注意简单的模式:从0开始,我们遍历数字。只要我们有另一个dgit,我们就用之前的结果乘以基数,然后加上数字值。这就是全部!没有数学。pow,没有复杂的指数计算
因此:
# 4 楼答案
这是经过一点清理后的函数