【发布时间】:2015-10-05 22:43:04
【问题描述】:
- 此方法计算长度为 10 的字符串中所有数字的总和。字符串的格式必须为“12345?789x”或“12?4567890”,其中“?”可以位于任何位置且值为 0,“x”(如果存在)位于字符串的末尾且等于 10。
- 总和应计算如下: 对于“11432?789x”,总和 = (10*1)+(9*1)+(8*4)+(7*3)+(6*2)+(5*0)+(4*7) +(3*8)+(2*9)+(1*10) = 164。
- 此代码非常适用于以“x”结尾的数字,但对于不以“x”结尾的数字,它会将 sum 的值返回为 0。例如,对于“111?111111”而不是返回 48,它返回 0。
-
我无法找出错误。请帮忙。
public static int sum(String input,int l){ int sum=0; int temp=0; char a; for(int i=0;i<l;i++){ a=input.charAt(i); if(a=='x'){ temp=10; } else if(a=='?'){ temp=0; } else{ temp = Character.getNumericValue(input.charAt(i)); } sum = temp*(10-i)+sum; } return sum; }
【问题讨论】:
-
“12345?789x”或“12?4567890”,在哪里?可以位于任何位置并且值为 0,'x'(如果存在)位于字符串的末尾并且等于 10。”您的示例甚至不是这种形式
-
"111?111111" 从你的代码是结果 48
-
@Fabinout 确实如此,数字可以是 1 到 9 之间的任何数字,而不是 0 和 10(因为它们是 ? 和 x)
-
不,您的代码结果为 48 @ryan321,请确保
l(长度)在作为参数传递时不是0 -
"111?111111" 返回 48。可能你没有将 l 设置为 10。
标签: java algorithm char int charat