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

squeeler642

Comp sci教授在作业中给了我们这个问题……我不确定该如何进行,我编写的代码似乎失败了。这是提示:


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

公共静态字符串bin2Dec(String binaryString)

编写一个测试程序,提示用户输入二进制字符串并显示其十进制等效项。


任何帮助,不胜感激。这是我的代码,如下所示:

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”转换为它们各自数字的最佳方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

将二进制数字转换为十进制数字的Java程序。输入是零和一的字符串

来自分类Dev

将二进制数字转换为十进制数字的Java程序。输入是零和一的字符串

来自分类Dev

如何将二进制数字转换为带符号的十进制数字

来自分类Dev

如何将二进制补码二进制字符串转换为负十进制数字?

来自分类Dev

使用array.reduce方法将二进制数字数组转换为十进制

来自分类Dev

将非整数十进制数字转换为二进制

来自分类Dev

DataGrid单元格-将十进制和二进制数字转换为六进制

来自分类Dev

我正在使用C ++应用程序将二进制转换为十进制数字

来自分类Dev

将带符号的10位二进制数字转换为十进制?

来自分类Dev

从十进制转换为最多n位的二进制数字

来自分类Dev

在Python中将32位二进制数字转换为十进制

来自分类Dev

接受代表十进制数字的字符串并以二进制格式返回的函数

来自分类Dev

接受代表十进制数字的字符串并以二进制格式返回的函数

来自分类Dev

将二进制字符串转换为十进制

来自分类Dev

将二进制字符串转换为十进制时结果错误

来自分类Dev

将字符串中的十进制转换为二进制时出错

来自分类Dev

Arduino C / C ++将二进制字符串转换为十进制

来自分类Dev

将二进制字符串转换为十进制

来自分类Dev

C ++从字符串输入将二进制转换为十进制

来自分类Dev

将字符串二进制转换为整数十进制

来自分类Dev

将十进制数字字符串转换为BCD的算法

来自分类Dev

如何将ASCII字符串转换为十进制数字?

来自分类Dev

将十进制数字从字符串转换为双精度

来自分类Dev

为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

来自分类Dev

为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

来自分类Dev

将数字从十进制转换为二进制

来自分类Dev

使用python将十六进制十进制数字转换为十进制

来自分类Dev

连接从十进制转换为二进制的二进制字符串

Related 相关文章

  1. 1

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

  2. 2

    将二进制数字转换为十进制数字的Java程序。输入是零和一的字符串

  3. 3

    将二进制数字转换为十进制数字的Java程序。输入是零和一的字符串

  4. 4

    如何将二进制数字转换为带符号的十进制数字

  5. 5

    如何将二进制补码二进制字符串转换为负十进制数字?

  6. 6

    使用array.reduce方法将二进制数字数组转换为十进制

  7. 7

    将非整数十进制数字转换为二进制

  8. 8

    DataGrid单元格-将十进制和二进制数字转换为六进制

  9. 9

    我正在使用C ++应用程序将二进制转换为十进制数字

  10. 10

    将带符号的10位二进制数字转换为十进制?

  11. 11

    从十进制转换为最多n位的二进制数字

  12. 12

    在Python中将32位二进制数字转换为十进制

  13. 13

    接受代表十进制数字的字符串并以二进制格式返回的函数

  14. 14

    接受代表十进制数字的字符串并以二进制格式返回的函数

  15. 15

    将二进制字符串转换为十进制

  16. 16

    将二进制字符串转换为十进制时结果错误

  17. 17

    将字符串中的十进制转换为二进制时出错

  18. 18

    Arduino C / C ++将二进制字符串转换为十进制

  19. 19

    将二进制字符串转换为十进制

  20. 20

    C ++从字符串输入将二进制转换为十进制

  21. 21

    将字符串二进制转换为整数十进制

  22. 22

    将十进制数字字符串转换为BCD的算法

  23. 23

    如何将ASCII字符串转换为十进制数字?

  24. 24

    将十进制数字从字符串转换为双精度

  25. 25

    为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

  26. 26

    为什么将十进制转换为二进制的递归方法比使用,返回字符串的迭代方法要快?

  27. 27

    将数字从十进制转换为二进制

  28. 28

    使用python将十六进制十进制数字转换为十进制

  29. 29

    连接从十进制转换为二进制的二进制字符串

热门标签

归档