如何以循环顺序循环?

时间:2016-01-18 11:01:05

标签: java for-loop

假设:

int id = 2;
for (int i = 0; i < 4; i++) {
    System.out.println(i);
}

以0,1,2,3的顺序输出。

如何让它从id开始并环绕以输出2,3,0,1?

7 个答案:

答案 0 :(得分:7)

一种可能性是“创造性”并使用数学运算符。

int id = 2;
for (int i = 0; i < 4; i++) {
    System.out.println((id + i) % 4); // 2 + 0 % 4 = 2, 2 + 1 % 4 = 3, 2 + 2 % 4 = 0
}

您可以定义变量,例如

,而不是使用4作为静态数字
int id = 2;
for (int i = 0; i < n; i++) {
    System.out.println((id + i) % n);
}

始终会打印循环订单。例如,对于n = 6,2,3,4,5,0,1 ......,

另一种方法是定义一个数组

int[] numbers = new int[] {2, 3, 0, 1};

并迭代它。

答案 1 :(得分:1)

     int id=2;
        for (int i = id;  i = id - 1; i = (i + 1) % 4)  {
         System.out.println(i);
        }

答案 2 :(得分:0)

一般解决方案:使用modulo:

import java.util.*;
class Main {
    public static void main (String[] args) throws Exception {

        int id = 2;
        int size = 4;
        for(int i = id; i < size + id; i++){
            System.out.println(i % size);
        }
    }
}

答案 3 :(得分:0)

你在找这样的东西吗?


import java.util.*;
class Main {
  public static void main (String[] args) throws Exception {

int id = 2;
for(int i = id; i < 4; i++)
      System.out.println(i); 
for(int i = 0; i < id; i++)
      System.out.println(i);
  }
}

答案 4 :(得分:0)

do-while循环提供了一个非常原始的解决方案,比使用modulo更快的smidgin:

int i = id;
do {
    System.out.println(i);      
    if (++i == 4) i = 0;
} while (i != id);

答案 5 :(得分:-1)

这会做你想要的,但我怀疑它在实践中是一种有用的方法。

import java.util.*;

class Main {
    public static void main (String[] args) throws Exception {
        int[] indexArray = {2, 3, 0 ,1}; //An array that holds the order you want to use
        int id = 2;
        for(int i = 0; i < indexArray.length; i++) {
            int j = indexArray[i];
            if (j==id) {
                System.out.println(j);
            } else {
                System.out.println(j);
            }
        }
    }
}

你到底想要达到什么目的?

答案 6 :(得分:-1)

  import java.util.*;

  class Main {

  public static void main (String[] args) throws Exception {

  int id = 2;
  int limit=4;

  for(int i = id; i < limit;i++){

      System.out.println(i);

       if (i==3){
        i=-1;
        limit=2;
       }

     }
    }
   }

这正是您想要实现的目标。

这里我因为i ++而给我分配了-1。