当我测试这段代码时,它总是返回0,我不知道为什么。
C
答案 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。