在for循环中单独调用函数

时间:2016-12-07 17:08:07

标签: java loops

基本上我有四个功能

f1
f2
f3 
f4

我需要创建一个for循环或while循环,它将为每次迭代调用每个函数

所以第一次迭代

1st = f1

第二次

2nd = f2

如果循环运行8次,那将是

f1()
f2()
f3()
f4()
f1()
f2()
f3()
f4()

我正在使用java,我认为我需要使用%运算符

由于

2 个答案:

答案 0 :(得分:1)

最简单的方法是在循环索引上使用开关和模数运算符。例如:

public class Main {

    static void f1() {
        System.out.println("f1");
    }
    static void f2() {
        System.out.println("f2");
    }
    static void f3() {
        System.out.println("f3");
    }
    static void f4() {
        System.out.println("f4");
    }

    public static void main(String[] args) {

        for (int i = 0; i < 16; ++i) {
            switch (i % 4) {
                case 0:
                    f1();
                    break;
                case 1:
                    f2();
                    break;
                case 2:
                    f3();
                    break;
                case 3:
                    f4();
                    break;
            }
        }
    }
}

正如@Andreas指出的那样,一旦你记住了用于函数的正确类型(在这种情况下为Runnable),这可以通过数组完成:

    // ... 
    static Runnable[] functions = 
        { Main::f1, Main::f2, Main::f3, Main::f4 };

    public static void main(String[] args) {

        for (int i = 0; i < 16; ++i)
            functions[i % 4].run();

    }

RunnableCallable并不完全一致,所以这似乎有点误用,但我不会通过类型看到一种简单的方法来做到这一点java.util.function

答案 1 :(得分:-2)

嵌套if-else的开关可以完成这项工作。范围是1到4,因为你有4个功能。我认为你不需要%运算符就可以了。