将字符串转换为int并获取数字之和

时间:2016-02-11 03:39:43

标签: java string char int

当我测试这段代码时,它总是返回0,我不知道为什么。

C

3 个答案:

答案 0 :(得分:3)

你几乎拥有它,但问题是你需要从使用'0'作为数字的所有地方减去cur。最简单的解决方法是在第一次分配'0'时减去cur

public class test {

    public int sumOfDigits(String s){
        int sum = 0;
        for(int i=0; i<s.length(); i++){
            char cur = (char)(s.charAt(i) - '0'); //Java autocasts to int when you subtract

            if (cur >= 0 && cur <= 9){
                sum += cur;
            }
        }


        return sum;

    }

}

如果您不想破坏- '0'的实际字符值,您也可以在cur的任何地方添加cur

if ((cur - '0') >= 0 && (cur - '0') <= 9){
    sum += (cur - '0');
}

答案 1 :(得分:1)

这是我的方法:我打破字符串并将其存储在数组部分中。然后将每个字符串转换为整数,然后将它们添加到sum。请问我是否有任何意义。感谢

public int sumOfDigits(String s){
String[] parts = s.split("");
    int sum = 0;
    for(int i=0; i < parts.length; i++){
        sum = sum + Integer.parseInt(parts[i]);           
    }
    return sum;
}

答案 2 :(得分:1)

你可以这么做:

public int sumOfDigits(String s) {
    int sum = -1;
    try {
        int n = Integer.parseInt(s);
        sum = 0;
        while(n!=0) {
            sum = sum + n % 10;
            n = n / 10;
        }
    }
    catch (NumberFormatException nfe) {
        System.out.println(nfe);
        System.out.println("Given string is not a number!");
    }
    return sum;
}

由于数字之和永远不会为负数,因此当输入为非数字字符串时,它返回-1。