Java:只使用一个LOOP打印数组的第一,第四,第七......

时间:2016-06-11 06:38:47

标签: java loops

给定一个整数数组。

我想先打印第1,第4,第7个数字。 然后是第2,第5,第8 .. 然后是3日,6日,9日..

我想使用ONLY ONE LOOP来遍历数组。我怎么能这样做?

(注意:数组的大小总是像4,7,10,13 ......等等,即以3为增量。)

感谢。

5 个答案:

答案 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 

DEMO

答案 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