假设:
int id = 2;
for (int i = 0; i < 4; i++) {
System.out.println(i);
}
以0,1,2,3的顺序输出。
如何让它从id
开始并环绕以输出2,3,0,1?
答案 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。