我可以在int中输入一个long类型的1d数组元素吗?

Tus*_*Mia 2 java arrays int foreach long-integer

class Test {
    public static void main(String[] args) {
        long[] longarr = {40, 50, 70, 90};
        int sum = 0;
        for (int x: (int) longarr) {
            sum += x;
        }
        System.out.println("sum is " + sum);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在不将long类型数组设置为int的情况下修复错误.有没有办法这样做?

Ous*_* D. 6

你的代码有几个问题:

  1. 你不能把long[]int[]变成这样的 - > (int) longarr,所以你需要做的就是把它当作for (int x: longarr) {...}
  2. 鉴于您已将其更改为for (int x: longarr) {...}新错误,因为编译器无法显式转换为a long,int因此您可以将变量的类型更改为for (long x: longarr) {...}
  3. 现在,您可以在应用求和之前将每个转换long为a int.

这就是@Meini的方法,但无论如何这是另一种方法:

int summation = Arrays.stream(longarr).mapToInt(v -> (int)v).sum();
Run Code Online (Sandbox Code Playgroud)

注意,mapToInt这里需要实际获得int你需要的值,否则如果我们直接将longs 的总和分配给int变量编译器会抱怨的变量,因为它long可以存储比a更大的值int.

另一个版本:

int summation = (int)Arrays.stream(longarr).sum();
Run Code Online (Sandbox Code Playgroud)


Mei*_*ini 5

尝试

public static void main(String[] args) {
    long[] longarr = {40, 50, 70, 90};
    int sum = 0;

    for (long x : longarr) {
        sum += (int)  x;
    }
    System.out.println("sum is " + sum);
}
Run Code Online (Sandbox Code Playgroud)

实际上你不必明确地转换xint- > sum += x;,我把它留在那里以使它更清楚