这段代码我的错误是什么?

时间:2016-11-07 01:57:18

标签: java string recursion sum

我正在尝试使用递归来编写一个程序来确定字符串中数字的总和,我认为下面的代码会将“总和是6”打印到控制台,而是输出“代码是150” 。

有人可以告诉我我的错误是什么吗?

public class SumOfString {
public static String Test = new String();
public static Integer count = new Integer(0);
public static Integer sum = new Integer(0); 
public static long sumThis(String s){
    if (count< s.length()){
        if (Character.isDigit(s.charAt(count))){
            int digit = s.charAt(count);
            count++;
            sum += digit;
            return sumThis(s);}
        else{
            count++;
            return sumThis(s);}}
    else{
        return sum;}}
public static void main(String[] args) {
    Test= "1a2b3c";
    System.out.println("The sum is " + sumThis(Test));
}

3 个答案:

答案 0 :(得分:1)

没有为您解决问题:

您的代码中的一个错误是:

int digit = s.charAt(count);

在String&#34; 1&#34;上测试这段代码。计数为0.它不返回整数1.为了得到它,你需要包装这个调用:

Character.getNumericValue(s.charAt(count));

你应该养成在调试器中运行代码的习惯。

答案 1 :(得分:1)

原因在于

int digit = s.charAt(count);

charAt将返回一个字符原语,因此它将是该字符的十进制值。

Character = Decimal Value
`1` = 49
`2` = 50
`3` = 51
-------
150

您需要将字符转换为int: Java: parse int value from a char

答案 2 :(得分:1)

查看一个ascii表,因为您会看到"1"的值为49,"2"为50,"3"为51,总计为150

int digit = s.charAt(count) - 48;