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

时间:2014-03-24 13:05:31

标签: java recursion

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

对于以下代码,当我输入" 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;
    }
}

1 个答案:

答案 0 :(得分:1)

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