英文:
Declaring int i outside for-each loop causing error?
问题
以下是翻译好的内容:
public static void main(String[] args) {
int[] arr = {-1,1,1};
int i;
for(i: arr){
System.out.println(i);
}
}
上述代码会报错。
错误:for循环的初始化器错误。
但是下面的代码可以正常工作。
public static void main(String[] args) {
int[] arr = {-1,1,1};
for(int i: arr){
System.out.println(i);
}
}
我可以知道为什么在for-each循环外部初始化i是一个错误吗?
在Java中,for-each循环(也称为增强型for循环)用于遍历数组或集合中的元素。在for-each循环中,循环变量的类型必须与数组或集合中元素的类型相匹配。因此,在for-each循环中,循环变量的类型是由编译器根据数组或集合的类型自动推断出来的。
在你提供的第一个代码示例中,你在for-each循环之前声明了一个int类型的变量i。这样做是错误的,因为在for-each循环中,循环变量的类型应该由编译器自动推断,而不是显式声明。因此,编译器会报告错误,指出在for循环的初始化器中存在错误的初始化器。
在第二个代码示例中,你将int类型的变量i的声明放在了for-each循环的初始化器中,这是正确的做法。编译器会根据arr数组的类型自动推断出i的类型为int,并且代码可以正常工作。
总结起来,初始化循环变量应该在for-each循环的初始化器中进行,而不是在循环之前进行显式声明。这样可以确保循环变量的类型与数组或集合中元素的类型相匹配。
英文:
public static void main(String[] args) {
int[] arr = {-1,1,1};
int i;
for(i: arr){
System.out.println(i);
}
}
above code gives ERROR.
error: bad initializer for for-loop
but the below code works fine.
public static void main(String[] args) {
int[] arr = {-1,1,1};
for(int i: arr){
System.out.println(i);
}
}
Can I know why initializing i outside for-each loop is a mistake.?
答案1
得分: 6
因为你不能像那样使用for循环。for in
语法要求你使用一个在循环中作用域范围内的新变量。你可以像这样使用它:
public static void main(String[] args) {
int[] arr = {-1,1,1};
int i;
for(i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
英文:
Because you simply can't use for loops like that. The for in
syntax require you use a new variable which is scoped to the loop. You could use it like this, though:
public static void main(String[] args) {
int[] arr = {-1,1,1};
int i;
for(i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
答案2
得分: 0
增强型for循环的语法就像这样。
for(int x: arr) {
System.out.println(x);
}
英文:
The syntax of the enhanced for loop are just like that.
for(int x: arr) {
System.out.println(x);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论