java 还有一种方法可以用途:将数组中的一组值相加

hmae6n7t  于 2022-11-27  发布在  Java
关注(0)|答案(5)|浏览(133)

我有一个数组,我试图对数组的一部分求和。
例如,我的数组是[1,2,3,4,5,6],但我只想将值添加到第三个元素
[1,2,3]。我想我以前用过一种涉及分号的方法,但我不太记得了。
类似于int sum = Sum (arr[0]:arr[2])的东西,但我不确定。类似的东西存在吗?
我想我几年前在Python中用过它。

vhmi4jdf

vhmi4jdf1#

没有内建的方法来对子数组求和。最简单的方法是在子数组上进行流处理:

int[] myArray = {1,2,3,4,5,6};

int sum = Arrays.stream(myArray, 0, 3).sum();

其中,0和3是起始和结束索引(起始索引包括起始索引,结束索引包括结束索引)

gudnpqoy

gudnpqoy2#

扩展Eritrean's优秀的答案你可以用一个有意义的名字创建一个接口,然后把它藏在你的库里。

interface IntRangeSum {
    static public int apply(int[] a, int start, int end) {
         return Arrays.stream(a, start, end).sum();
    }
}

int[] a = {1,2,3,4,5};
int result = IntRangeSum.apply(a, 2, 4);
System.out.println(result);

印刷品

7
kqqjbcuj

kqqjbcuj3#

import java.util.*;
public class MyClass {
    public static void main(String args[]) {
      int[] oldArray ={1,2,3,4,5};
      int[] newArray = Arrays.copyOfRange(oldArray, 0, 3);
      int sum = 0;
      for (int i: newArray) {
        sum += i;
      }
      System.out.println("Sum = " + sum);
    }
}

**输出:**6

据我所知,Java没有Python中的切片表示法,但这虽然更冗长,但应该可以达到目的。

t98cgbkg

t98cgbkg4#

您可以使用java.util.Arrays.copyOfRange方法的适当变体来创建和操作切片。
或者使用循环:

int sum = 0;
for(var i=0; i < 3; i++) {
  sum = sum + i
}
r55awzrz

r55awzrz5#

另一种选择是使用Arrays.stream() + IntStream.limit()的组合:

int[] arr = // initializing the array

int sum = Arrays.stream(arr).limit(3).sum();

相关问题