gpt4 book ai didi

java - 将二进制数字字符串转换为十进制数...使用递归

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:49 26 4
gpt4 key购买 nike

Comp sci 教授在我们的家庭作业中给了我们这个问题......我不确定如何继续,我编写的代码似乎失败得很惨。这是提示:


(二进制转十进制) 编写一个递归方法,将二进制数作为字符串解析为十进制整数。方法头是:

公共(public)静态字符串 bin2Dec(字符串二进制字符串)

编写一个测试程序,提示用户输入一个二进制字符串并显示它的十进制等价物。


非常感谢任何帮助。这是我的代码如下:

import java.util.Scanner;

public class HW04_P5 {
static int index = 0;
static int power = 0;
static int number = 0;
static boolean exit = false;

@SuppressWarnings("resource")
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.print(" Enter a binary number to convert to decimal: ");
String in = scan.nextLine();
index = in.length()-1;
System.out.print(" Binary number converted to decimal: "+bin2Dec(in));
}

public static String bin2Dec(String in)
{
if((in.substring(index,index+1).equals("1"))&&(index>0))
{
number += Math.pow(2,power);
System.out.print(number);
power++;
index--;
bin2Dec(in);
}
else if((in.substring(index,index+1).equals("0"))&&(index>0))
{
power++;
index--;
bin2Dec(in);
}
System.out.print(number);
return "";
}
}

最佳答案

没有额外的变量 index、power 和 p 会更干净。只需从右到左处理字符串。您也不希望在递归函数之外跟踪“全局”变量号……这很困惑而且很奇怪。在我看来,你希望递归函数中包含所有状态。即使有这些限制,您仍然可以基本上用两行来完成:

public static int bin2Dec(String s) {
if (s == null || s.isEmpty()) return 0;
else return s.charAt(s.length()-1)-48+2*bin2Dec(s.substring(0,s.length()-1));
}

这可能不是最清晰的解决方案,但我认为它是最优雅的。可以通过将 else 子句分成几行来提高清晰度。 48 是 0 的 Unicode 字符编号,这可能不是将字符“0”和“1”转换为各自数字的最佳方式。

关于java - 将二进制数字字符串转换为十进制数...使用递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29530015/

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