计算所有奇数数组索引的总和

时间:2013-08-12 21:32:54

标签: java arrays if-statement for-loop

我想计算所有奇数数组索引的总和,但是我在找到正确的方法时遇到了一些麻烦。

到目前为止,这是我的代码:

    String id = "9506265088085";
    String[] strArray = id.split("");

    int[] intArray = new int[strArray.length];

    int sum = 0;

    for (int i = 0; i < 6; i++) {

        if (i%2!=0)
        {
            sum += Integer.parseInt(String.valueOf(id.charAt(i)));

        }} 

        System.out.println(sum);

关于为什么这不起作用的任何想法,或更简单的方法吗?为了澄清我想在奇数组索引位置添加所有数字,所以intArray[1] + intArray[3] + intArray[5] + ...

修改 忘了提我只想添加1,3,5,7,9,11而不是13。

5 个答案:

答案 0 :(得分:7)

您只能从i=0 to i=5

进行循环播放

答案 1 :(得分:5)

另一个答案是对的,你只是循环到5.然而,你使这个过于复杂;您可以使用一个巧妙的技巧来避免Integer.parseInt()String.valueOf()

int sum = 0;

for (int i = 1; i < id.length(); i += 2) {
    sum += (id.charAt(i) - '0');
}

另请注意,您不必反复检查i%2,而是可以在每次迭代结束时将2添加到循环控制变量中(让它从1开始,这样您就可以只有奇数指数)。

答案 2 :(得分:3)

刚编辑了您的代码:

String id = "9506265088085";
int[] intArray = new int[id.length()];
int sum = 0;

for (int i = 0; i < intArray.length; i++) {

    if (i%2!=0)
    {
        sum += Integer.parseInt(String.valueOf(id.charAt(i));

    }} 

    System.out.println(sum);

答案 3 :(得分:2)

String id = "9506265088085";
int[] intArray = new int[strArray.length];
int sum = 0;

for (int i = 1; i < id.length(); i+=2) {
        sum += Integer.parseInt(String.valueOf(id.charAt(i)));
    } 

    System.out.println(sum);

答案 4 :(得分:0)

此数组中没有索引13,因为Java索引从0开始。使用Java 8计算所有奇数数组索引之和的解决方案是:

    String id = "9506265088085";
    String[] strArray = id.split("");

    int sum = IntStream.range(0, strArray.length)
            .filter(idx -> idx % 2 == 1)
            .map(idx -> Integer.parseInt(strArray[idx]))
            .sum();

    System.out.println(sum);