因为那里没有可访问的计数器或i
可以重置为零。
有没有什么方法可以使用continue
或break
来实现这一目标?
class CommandLine {
public int[] sort(int array[]) {
int temp;
for (int i=0; i<array.length-1; i++) {//must have used for-each
if (array[i] > array[i+1]){
temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
i=-1;
}//if end
}//for end
return array;
}//main end
}//class end
答案 0 :(得分:2)
通常,没有办法这样做:用于“驱动”for-each
循环的迭代器是隐藏的,因此您的代码无法访问它。
当然,您可以创建一个类似于集合的类,它保留对它创建的所有迭代器的引用,并允许您“在侧面”进行重置。但是,这有资格作为黑客,应该避免。
如果您需要一种方法将迭代位置重置回特定位置,请使用常规for
循环。
答案 1 :(得分:1)
不,内部的每个循环都不使用任何计数器。因此,只需使用通常的循环:
for (int i = 0; i < myCollection.size(); i ++) {
// do something
}
更多信息:Is there a way to access an iteration-counter in Java's for-each loop?