1

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

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

    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。

4

5 回答 5

7

你只是从循环i=0 to i=5

于 2013-08-12T21:34:56.530 回答
6

另一个答案是正确的,您只循环到 5。但是,您使这变得过于复杂;您可以使用一个巧妙的技巧来避免Integer.parseInt()and String.valueOf()

int sum = 0;

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

另请注意i%2,您可以简单地2在每次迭代结束时添加到循环控制变量,而不是重复检查(并让它开始,1这样您就只命中奇数索引)。

于 2013-08-12T21:43:21.013 回答
4

刚刚编辑了您的代码:

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);
于 2013-08-12T21:36:15.343 回答
3
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);
于 2013-08-12T21:34:47.103 回答
1

此数组中没有索引 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);
于 2019-06-04T16:46:47.660 回答