将字符串(包含字符和整数)转换为整数并计算 JAVA 中的总和

Converting String (containing characters and integers) to integers and calculating the sum in JAVA

你的例子:

111?111111

预期结果:48

如果我打电话:

String input = "111?111111";
int result = sum(input,input.length());

结果是 48

也许你这样调用方法:

String input = "111?111111";
int result = sum(input,0);

结果是0

或者 sum 的第二个参数已损坏。

我写了这个测试,它是绿色的:

@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()。

有趣的是,我使用的是您发布的相同代码,而且我得到了正确的答案。顺便说一句,你引用的例子 (10*1)+(9*1)+(8*4)+(7*3)+(6*2)+(5*0)+(4*7)+(3*8)+(2 *9)+(1*10) = 133. 正确答案是164.

更简单的方法:

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;
}