下正常工作,循环变量增强的for循环
int i;
for (i = 0; i < 10; i++) {}
但这并不
// a is an ArrayList of Integers
Integer i;
for (i: a) {}
,我不得不做这种方式:
for (Integer i : a) {}
为什么第二个循环不起作用?
下正常工作,循环变量增强的for循环
int i;
for (i = 0; i < 10; i++) {}
但这并不
// a is an ArrayList of Integers
Integer i;
for (i: a) {}
,我不得不做这种方式:
for (Integer i : a) {}
为什么第二个循环不起作用?
对于for循环,您需要3个语句。 你的第二个循环只有2条语句,而你的第一条语句有3条。最重要的是,你从来没有初始化你的整数i。确保做到
int i =0;
for(i;i<=10;i++){
}
对于enchanced for循环,你必须有
for (String element : array) {
System.out.println("Element: " + element);
}
你可以看看这个链接,它可能会有所帮助。 What is the syntax of enhanced for loop in Java?
想想这样:如果你总是初始化你的变量会发生什么?
第一种情况:在本例中初始化,显然没有问题。
在第二种情况下:初始化它,说,1.现在你有一个变量,“1”,你把它扔进这个for循环。 “for(1:a)”。那是什么意思??如果你为a中的每个值覆盖“i”的值,那么当它出现在循环中时,它只是A中的最后一个条目。再说一遍,那真的意味着什么?为什么这会有用?这个循环之外的其他代码的效果如何?支持它的设计很糟糕,它会导致各种疯狂的,意想不到的行为和不可读的代码。
在第三种情况下:您的变量在该循环的范围内显式声明,并且非常明显是暂时的。它将完成从这个数组中提取你需要的东西并完成它的工作。对外部代码的任何修改都需要用明确的设置器有意地发生。请注意,你不能在这里初始化它,因为初始化没有意义。
你必须明确地给出你在数组列表中迭代的对象的类型。在第一个for循环中,您只需插入索引即可。第二,你试图让for循环抓住对象而不知道它是什么类型的对象。
增强for语句相当于一个基本为形式的语句:
for (Iterator i = Expression.iterator(); i.hasNext();) {
TargetType Identifier = (TargetType) i.next();
...
}
这一个是正常使用循环。你可以声明变量类型之外的
int i;
for (i = 0; i < 10; i++) {}
或
Integer i;
for (i = 0; i < 10; i++) {
System.out.println(i);
}
第二个,如果你想与通用型使用的foreach(也称为增强型for循环)时,语法必须是:
for(data_type variable : array | collection){}
希望得到这个帮助!
第二个是增强for循环。 – Corey
是你的“一”指数组? – Randomshot6
ArrayList,好友。 – Corey