【问题标题】:Write a method that will convert the supplied binary digit (as a string) to a decimal number编写一个将提供的二进制数字(作为字符串)转换为十进制数的方法
【发布时间】:2019-09-26 12:34:24
【问题描述】:

此方法的目的是将提供的二进制数字(作为字符串)转换为十进制数,但我没有得到问题想要的结果,例如convertToDecimal("01101011") = 107,我是我不确定我相信我将二进制转换为十进制数。 例如:

测试

System.out.println(convertToDecimal("11001101")); = 205 

我尝试了一个while循环并创建了整数,但它只是没有给我相同的结果

public static int binaryToDecimal(String binary) {
     int decimal = 0;
     int power = 0;
     int currentIndex = binary.length() - 1;
     while (currentIndex>=0) {
         int currentDigit = binary.charAt(currentIndex) - '0';  
         decimal += currentDigit * Math.pow(2, power);
         power++;
         currentIndex--;
     }
     return decimal;
 }

我期望的输出是:

convertToDecimal("01101011") = 107 
convertToDecimal("00001011") = 11    ,  
System.out.println(convertToDecimal("11001101")); = 205 

但没有一个是对的

【问题讨论】:

  • 你实际上得到了什么?如果我们要帮助您,我们也需要看到这一点。谢谢。
  • 你能添加你得到的结果吗?
  • 你应该得到你所期望的:107、11、205
  • 你的函数被称为binaryToDecimal,但你正在调用convertToDecimal。这是复制粘贴错误还是您调用了错误的方法?
  • 好的,它现在真的可以工作了,我不知道为什么它以前不能工作,代码是正确的,感谢大家的帮助。我是这个网站的新手,所以我应该删除这篇文章还是继续保留它,因为它是正确的?

标签: java binary


【解决方案1】:

我运行了你的代码,它工作正常。但我需要做一个简单的改变:

System.out.println(convertToDecimal("11001101")); = 205 

必须改为:

System.out.println(binaryToDecimal("11001101")); = 205 

因为 binaryToDecimal() 是您的函数的实际名称:

public static int binaryToDecimal(String binary) {
     int decimal = 0;
     int power = 0;
     int currentIndex = binary.length() - 1;
     while (currentIndex>=0) {
         int currentDigit = binary.charAt(currentIndex) - '0';  
         decimal += currentDigit * Math.pow(2, power);
         power++;
         currentIndex--;
     }
     return decimal;
 }

之后,一切正常。

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多