我很好奇,如果在Java中,你可以创建一段代码来继续迭代一段代码而不使用for
或while
循环,如果是这样,那么有什么方法可以用来解决这个问题?
答案 0 :(得分:3)
看看recursion。递归函数是一个调用自身直到达到基本案例的函数。一个例子是阶乘函数:
int fact(int n)
{
int result;
if(n==1)
return 1;
result = fact(n-1) * n;
return result;
}
答案 1 :(得分:2)
您可以使用Java 8 Streams方法迭代Collection的元素。您可以使用的方法包括过滤方法(获取满足某些条件的集合的所有元素),映射方法(将一种类型的集合映射到另一种类型的集合)和聚合方法(如计算所有的总和)集合中的元素,基于存储在集合中的元素的某个整数成员。)
例如 - Stream forEach:
List<Element> = new ArrayList<Element>();
...
list.stream().forEach (element -> System.out.println(element));
或者你可以without a Stream:
List<Element> = new ArrayList<Element>();
...
list.forEach (element -> System.out.println(element));
答案 2 :(得分:1)
递归的另一种变体:
public class LoopException extends Exception {
public LoopException(int i, int max) throws LoopException {
System.out.println( "Loop variable: "+i);
if (i < max)
throw new LoopException( i+1, max );
}
}
当然这只是一点乐趣,不能真正做到这一点。
答案 3 :(得分:1)
Java没有goto
语句(that's a lie),所以这种方式是死路一条。
但是你总是可以使用recursion无休止地迭代一段代码。旧factorial function似乎是最受欢迎的,但由于它不是一个无限循环,我会选择这个简单的函数:
int blowMyStack(int a) {
return blowMyStack(a + 1);
}
使用该语言的各种功能,有很多方法可以做到这一点。但它始终属于潜在的递归。
答案 4 :(得分:0)
如果你引用像C&C的goto这样的话,答案就是否定。
在其他情况下,您可以使用递归函数。