gpt4 book ai didi

java - 为什么在增强 for 循环后返回 i 时会出现编译错误?

转载 作者:行者123 更新时间:2023-12-02 03:31:23 25 4
gpt4 key购买 nike

我正在学习 Java,但我不明白为什么会出现错误。

public static int sum(ArrayList<Integer> list) {

for(int i : list){
i += i;
}

return i;
}

我通过创建一个新的 sum 变量修复了错误,但我仍然想了解为什么我无法返回 i。 i 的范围仅限于 for 循环吗?我想知道为什么不允许它在外面使用它会很有用。

最佳答案

Why do I get a compilation error when returning i after enhanced for loop?

因为i for中声明循环的范围仅限于 for环形;您无法在 for 之外访问它循环。

您说过您已经通过添加新的 sum 来修复它变量,所以我假设你最终得到的是这样的结果:

public static int sum(ArrayList<Integer> list) {
int sum = 0;

for (int i : list){
sum += i;
}

return sum;
}

我还建议您使用 List<Integer>而不是ArrayList<Integer> :

public static int sum(List<Integer> list) {
// Here ----------^

// ...
}

一般来说,编码为限制最少的类型。

<小时/>

另外,修改 i 的值循环体中的内容将被循环本身设置的下一次迭代的值覆盖。考虑:

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
for (int i : list){
System.out.println("before: " + i);
i += i;
System.out.println("after: " + i);
}

输出

before: 1after: 2before: 2after: 4before: 3after: 6

无论你做什么,都要注意i在循环体中,它在下一次迭代时由循环本身设置。

关于java - 为什么在增强 for 循环后返回 i 时会出现编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com