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的情况下修复错误.有没有办法这样做?
你的代码有几个问题:
long[]它int[]变成这样的 - > (int) longarr,所以你需要做的就是把它当作for (int x: longarr) {...}for (int x: longarr) {...}新错误,因为编译器无法显式转换为a long,int因此您可以将变量的类型更改为for (long x: longarr) {...}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)
尝试
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)
实际上你不必明确地转换x为int- > sum += x;,我把它留在那里以使它更清楚
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |