gpt4 book ai didi

java - 递归地将一串 1 和 0 解析为其十进制值

转载 作者:行者123 更新时间:2023-12-01 12:25:33 25 4
gpt4 key购买 nike

我的目标是从输入中获取由 1 和 0 组成的字符串,然后使用 bin2Dec 方法将该二进制字符串解析为十进制数。我怎样才能正确转换它?

这是我到目前为止所拥有的:

public class Tester {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a binary number string: ");
String s = input.nextLine();
System.out.println("The decimal value is " + bin2Dec(s));
}
public static int bin2Dec(String binaryString){
}
}

最佳答案

执行此操作的算法实际上非常简单。

如果您查看一个二进制字符串,例如“10110”(22),您会注意到它等于 16 + 4 + 2。再仔细看看,您会发现它对应于 <强>1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 0 * 2^0。看到图案了吗?对于值为 v 且位置为 n 的每个数字,它对总和的“贡献”为 v * 2^n

现在,这个问题实际上更容易迭代地完成(使用 for 循环),但我认为这是一个家庭作业问题,因此你必须递归地完成它。

你需要创建另一个方法,public static int bin2dec(String bin, intposition)(这称为重载方法,两个方法可以具有相同的名称,只要它们的签名相同)是不同的)。在这种新方法中,您可以遵循上面概述的算法:

  1. 如果position等于bin.length(),则已经超出了字符串的末尾。只需返回 0。

  2. 否则,将 v 设置为等于 position 处字符的整数值(您可以使用整数解析方法,也可以仅使用 if/ternary 因为只有两个选项)。

  3. v 乘以 2^position(提示:Math.pow)。

  4. 返回v加上bin2dec(bin,position + 1)(这是实际的递归部分)。

现在,在原来的bin2dec中,您可以只输入return bin2dec(bin, 0)。这只是允许您在不初始化递归计数器的情况下调用 bin2dec,这只是调用者不想处理的一般簿记(这里不太重要,但在较大的项目中非常重要)。 p>

关于java - 递归地将一串 1 和 0 解析为其十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com