gpt4 book ai didi

java - 在 Java 中的 Foreach 循环外声明变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:29 32 4
gpt4 key购买 nike

谁能请教我以下问题:

public class Loopy {
public static void main(String[] args)
{
int[] myArray = {7, 6, 5, 4, 3, 2, 1};

int counterOne;
for (counterOne = 0; counterOne < 5; counterOne++) {
System.out.println(counterOne + " ");
}
System.out.println(counterOne + " ");

int counterTwo = 0;
for (counterTwo : myArray) {
System.out.println(counterTwo + " ");
}

}

}

在 for 循环中,我们声明 counterOne在循环外并在循环内使用它。这是正确的,只要我们不使用 counterOne循环完成后。

在 foreach 循环中,我们还声明了 counterTwo在循环外,然后在循环内使用它。但是,在这种情况下会引发错误:

"Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol symbol: class counterTwo location: class package1.Loopy"

你能帮我理解为什么吗?

两者之间的唯一区别是 counterOne初始化为零,然后递增赋值(小于5)。

在 foreach 循环中,counterTwo一个一个赋值,每个数组项。

如果我们在第二个 for 循环中进行此调整,程序就会运行:for(int counterTwo : myArray) ,而第一个 for 在这两种情况下都适用:

  1. 现有的
  2. for (counterOne = 0; counterOne < 5; counterOne++)

最佳答案

来自 this section of the Java Language Specification关于增强的 for 循环:

The enhanced for statement has the form:

EnhancedForStatement:

for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) Statement

EnhancedForStatementNoShortIf:

for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) StatementNoShortIf

请注意,类型声明 UnannType 必须出现在 for 循环中。因此,您应该按如下方式编写循环:

for (int z : x) {

关于java - 在 Java 中的 Foreach 循环外声明变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30672704/

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