编写递归函数将String转换为它所代表的数字。例如对于输入“1231”,您应该返回整数1231

时间:2015-06-21 23:40:38

标签: java

import java.util.Scanner;


public class ReturnNumberGivenInAString {

    public static int number(String s1,int p)
    {
        if(s1.length()==0)
        {
            return 0;
        }

        for(int i = 0; i<=9;i++)
        {
            if(s1.charAt(0)==i)
            {
                p = p + i*10;
            }

        }
        int s = number(s1.substring(1), p);

        return s;


    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s = new Scanner(System.in);
        String s1 = s.next();
        int p = 0;
        System.out.println(number(s1,p));



    }

}

它显示0作为输出 调试时我注意到s1.charAt(0)没有与i相比 请告诉我代码中的错误

2 个答案:

答案 0 :(得分:1)

问题在于:

Process.GetCurrentProcess()

当您进行整数比较时, if(s1.charAt(0)==i) 返回的值将转换为其ascii等效值。

要解决此问题,您可以执行以下操作:

s1.charAt(0)

答案 1 :(得分:0)

s1.chatAt(0)将返回一个与int进行比较的字符。在比较之前,您需要先将该字符转换为int。

使用Character.getNumericValue(s1.charAt(0))