有没有办法使用最终变量实现循环?我的意思是当您在初始化后不允许更改任何内容时,将运行指定次数的迭代的循环!
问问题
734 次
4 回答
8
是否允许递归,或者你真的需要像for
or这样的循环构造while
吗?如果你可以使用递归,那么:
void loop(final int n) {
if (n == 0) {
return;
} else {
System.out.println("Count: " + n);
loop(n-1);
}
}
于 2013-03-21T18:37:12.640 回答
1
一种方法是创建一个Iterable<Integer>
表示任意范围的类(实际上不必将所有值存储在列表中):
public static class FixedIntRange implements Iterable<Integer> {
private final int min;
private final int max;
public FixedIntRange(final int min, final int max) {
this.min = min;
this.max = max;
}
@Override
public Iterator<Integer> iterator() {
return new Iterator<Integer>() {
private Integer next = FixedIntRange.this.min;
@Override
public boolean hasNext() {
return next != null;
}
@Override
public Integer next() {
final Integer ret = next;
next = ret == max ? null : next + 1;
return ret;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
}
然后正常迭代它:
for (final int i : new FixedIntRange(-10, 20)) {
// this will be run for each i in the range [-10, 20]
}
于 2013-03-21T18:46:06.650 回答
0
像这样的东西-
final int max = 5;
for(int i=0; i<max; i++) {}
或者另一个有趣的——
final boolean flag = true;
while(flag) {
// keep doing your stuff and break after certain point
}
多一个-
List<String> list = ......
for(final Iterator iterator = list.iterator(); iterator.hasNext(); ) {
}
于 2013-03-21T18:36:04.253 回答
0
创建一个大小为所需迭代次数的数组,然后在 for-each 循环中使用它:
public class Test {
public static void main(String[] args) {
final int N = 20;
final int[] control = new int[N];
for(final int i : control){
System.out.println(i);
}
}
}
这里的技巧是迭代索引是由编译器生成的,作为增强 for 语句的一部分,并且不使用任何用户声明的变量。
于 2013-03-21T18:40:54.540 回答