是否有可能在Java中编写一个实际上不使用循环方法的循环?

时间:2014-07-13 14:02:39

标签: java loops

我很好奇,如果在Java中,你可以创建一段代码来继续迭代一段代码而不使用forwhile循环,如果是这样,那么有什么方法可以用来解决这个问题?

5 个答案:

答案 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这样的话,答案就是否定。

在其他情况下,您可以使用递归函数。