Java:打印第一、第四、第七。。。仅使用一个循环的数组的?

Java:打印第一、第四、第七。。。仅使用一个循环的数组的?,java,loops,Java,Loops,给定一个整数数组 我想先打印打印第1、第4、第7张。。数字。 然后是第二、第五、第八。。 然后是第三、第六、第九 我只想使用一个循环来遍历数组。我该怎么做 (注意:数组的大小将始终类似于4、7、10、13……等等,即以3为增量。) 谢谢。写一个函数 private int index(int i, int length) 它为循环变量i计算正确的索引 编辑 这并不像我最初想的那么简单: public static void main(String[] args) { int[] ar

给定一个整数数组

我想先打印打印第1、第4、第7张。。数字。 然后是第二、第五、第八。。 然后是第三、第六、第九

我只想使用一个循环来遍历数组。我该怎么做

(注意:数组的大小将始终类似于4、7、10、13……等等,即以3为增量。)

谢谢。

写一个函数

private int index(int i, int length)
它为循环变量i计算正确的索引

编辑

这并不像我最初想的那么简单:

public static void main(String[] args) {

    int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
    for (int i = 0; i < array.length; i++) {

        System.out.println(array[index(i, array.length)]);
    }
}

private static int index(int i, int length) {

    int third = (length + 2) / 3;
    if (length % 3 == 1 && i >= third) { // spezial, because second third is smaller
        return index(i - 1, length - 1);

    }

    int group = i % third;

    return (group) * 3 + (i / third);
}
publicstaticvoidmain(字符串[]args){
int[]数组={1,2,3,4,5,6,7,8,9,10,11,12,13};
for(int i=0;i=third){//spezial,因为second-third更小
收益指数(i-1,长度-1);
}
int组=1%三分之一;
返回(组)*3+(一次/三次);
}
编辑 做了一些清理工作

编写一个函数

private int index(int i, int length)
它为循环变量i计算正确的索引

编辑

这并不像我最初想的那么简单:

public static void main(String[] args) {

    int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
    for (int i = 0; i < array.length; i++) {

        System.out.println(array[index(i, array.length)]);
    }
}

private static int index(int i, int length) {

    int third = (length + 2) / 3;
    if (length % 3 == 1 && i >= third) { // spezial, because second third is smaller
        return index(i - 1, length - 1);

    }

    int group = i % third;

    return (group) * 3 + (i / third);
}
publicstaticvoidmain(字符串[]args){
int[]数组={1,2,3,4,5,6,7,8,9,10,11,12,13};
for(int i=0;i=third){//spezial,因为second-third更小
收益指数(i-1,长度-1);
}
int组=1%三分之一;
返回(组)*3+(一次/三次);
}
编辑
做了一些清理工作

当达到长度时,需要再次设置循环索引。检查下面的代码

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();
 }
}

当达到长度时,需要再次设置循环索引。检查下面的代码

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();
 }
}

这只是一个粗略的猜测,但类似的方法应该可以奏效-

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;
     }


    }
intb[];int temp=b.长度//将输入的数字存储在此数组中

对于(inti=0,j=0;j来说,这只是一个粗略的猜测,但类似的东西应该是可行的-

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;
     }


    }
int b[];int temp=b.length;//将输入的数字存储在此数组中

对于(int i=0,j=0;j我将这样做,垂直打印每个数组序列:-

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]);
            }
        }
    }
int[]a={1,2,3,4,5,6,7,8,9,10};
int k=3;
对于(int i=0;i
输出

1 2 3

4 5 6

7 8 9


10

下面是我的方法,垂直打印每个数组序列:-

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]);
            }
        }
    }
int[]a={1,2,3,4,5,6,7,8,9,10};
int k=3;
对于(int i=0;i
输出

1 2 3

4 5 6

7 8 9


10

假设数组的长度为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] + " ");
}

假设数组的长度为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] + " ");
}

虽然它确实是可行的,但读起来会很痛苦。嵌套循环会简单得多。为什么你只需要一个循环?总是有9个整数吗?乔恩:数组的长度会像4,7,10,13…也就是增量3。我处理的问题只使用一个循环,我不想改变它。乔恩:只是居里ous;我怎样才能用嵌套循环实现这一点?虽然它确实可行,但读起来会很痛苦。嵌套循环会简单得多。为什么你只需要一个循环?总是有9个整数吗?Jon:数组的长度会像4,7,10,13…即增量3。我处理的问题只使用一个循环,我不想改变它。乔恩:我只是好奇;我怎样才能用嵌套循环来完成这个任务?你能更详细一点吗?你能更详细一点吗?这是可变大小数组的一种更一般化的形式这是可变大小数组的一种更一般化的形式