java - 与 Math.pow() 一起使用时无法获得正确的数字乘积

标签 java recursion

我试图编写一个递归函数,它获取一个字符串并返回它的整数形式。我知道这可以在 Java 中使用 Integer.parseInt 轻松完成。这是我正在做的练习的一部分。

对于以下代码,当我输入“963”作为输入时,它返回的输出为“6291”。因此,我检查了数组是否正确传递,确实如此。

为了检查乘法,我每次都将乘积分开并打印,结果是 5700、540 和 51,正确的总和是 6291。(实际上应该是 900 + 60 + 3 = 963)。我无法弄清楚我的程序出了什么问题。

import java.io.*;
import java.lang.*;
class RecConvert
{
    static double i=0;
    static double sum=0;
    public static void main(String[] args) throws IOException
    {
        BufferedReader B = new BufferedReader(new InputStreamReader(System.in));
        String input = B.readLine();
        int number = RecursiveConvert(input);
        System.out.println("The number is "+number);
    }

    static int RecursiveConvert(String input)
    {
        char[] charArray = input.toCharArray();
        if(i < charArray.length)
            {
                sum = sum + (charArray[(int)i]) * ( (double)Math.pow(10.0,charArray.length-i-1) );
                i++;
                return RecursiveConvert(input);
            }
        else
            return (int)sum;
    }
}

最佳答案

这是你的问题(charArray[(int)i])。您将 char 与 double 相乘。 Character.getNumericValue(charArray[(int)i]) 将解决它。

关于java - 与 Math.pow() 一起使用时无法获得正确的数字乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22610249/

相关文章:

multithreading - Prolog 查找所有路径实现

java - 如何让 ADmob 横幅广告显示在 Libgdx 中

java - 如何通过cordova exec在java中开发gps插件

java - 多个类加载器和单例

java - 正则表达式字符类双重否定中的错误?

recursion - 使用嵌套对象时,如何在 AngularJS 中制作递归模板?

c++ - 返回排序数组中重复数字计数的函数

java - 实例化一个类并让它完成工作的最佳方法是什么

Python 数组加法递归

c++ - "Executing"没有递归的语句体