给定一个整数数组。
我想先打印第1,第4,第7个数字。 然后是第2,第5,第8 .. 然后是3日,6日,9日..
我想使用ONLY ONE LOOP来遍历数组。我怎么能这样做?
(注意:数组的大小总是像4,7,10,13 ......等等,即以3为增量。)
感谢。
答案 0 :(得分:2)
写一个函数
This is Path 1: [1]
This is Path 1: [3, 4, 5, 7, 1, 2]
This is Path 2: [3, 4, 6, 7, 1, 2]
This is Path 1: [1, 2, 5, 7]
This is Path 2: [1, 3, 4, 5, 7]
This is Path 3: [1, 3, 4, 6, 7]
计算循环变量i的正确索引
修改强>
我没想到这么容易:
private int index(int i, int length)
修改强> 做了一些清理工作;
答案 1 :(得分:1)
这只是一个粗略的猜测,但这样的事情应该有效 -
int b[]; int temp=b.length;//Store the inputted numbers in this array
for(int i=0, j=0; j<3; i=i+3){
if(i<temp) System.out.println(b[i]);
if(i>=temp){
i=i%3+1;
++j;
}
}
答案 2 :(得分:1)
以下是我将如何做到这一点,垂直打印每个数组序列: -
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int k = 3;
for (int i = 0; i < a.length; i += k) {
System.out.print(a[i] + "\t");
if (i + 1 < a.length) {
System.out.print(a[i + 1] + "\t");
if (i + 2 < a.length) {
System.out.println(a[i + 2]);
}
}
}
输出
1 2 3
4 5 6
7 8 9
10
答案 3 :(得分:0)
当达到长度时,您需要再次设置循环索引。检查下面的代码
int a[] = {4,6,7,2,7,8,9,4,3};
int i = 0;
int j = 0;
int start = 3;
int printed = 0;
while (i < a.length && printed < a.length) {
printed++;
System.out.print(a[i] + " ");
i += start;
if (!(i < a.length)) {
i = ++j;
System.out.println();
}
}
输出
4 2 9
6 7 4
7 8 3
答案 4 :(得分:0)
假设数组的长度为9,这就是我在问题中读取第二行的方式,这将是我的方法:
int[] a = {1,2,3,4,5,6,7,8,9};
for (int i = 0; i < a.length*3; i+=3) {
System.out.print(a[i%a.length + i/a.length] + " ");
}
输出:
1 4 7 2 5 8 3 6 9