我无法找出错误。请帮忙。
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;
}
答案 0 :(得分:2)
你的例子:
111?111111
预期结果:48
如果我打电话:
String input = "111?111111";
int result = sum(input,input.length());
结果是48
也许你这样称呼方法:
String input = "111?111111";
int result = sum(input,0);
结果是0
或者和的第二个参数已损坏。
答案 1 :(得分:2)
我写了这个测试并且它是绿色的:
@Test
public void removeme() {
String input = "111?111111";
int sum = 0;
int temp = 0;
for(int i = 0; i < input.length(); i++){
char 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;
}
assertThat(sum , is(48));
}
我建议您删除参数l
,并像我一样使用input.length()。
答案 2 :(得分:2)
更简单的方法:
public static int sum(String input) {
int sum = 0, temp = 0, i = 0;
for (char a : input.toCharArray()) {
temp = a == 'x' ? 10 : a == '?' ? 0 : Character.getNumericValue(a);
sum += temp * (10 - i++);
}
return sum;
}