在数组printint的for循环之间切换。 Java的

时间:2017-03-03 04:31:03

标签: java arrays printf

如何在20行中每行打印10个项目。然后我想跳到下一个阵列并做同样的事情。之后要求用户继续输入。

以下是我的示例输出:

===================================== After Level 1 Merged ==========================================

 {   129 } {   133 } {   354 } {   425 } {   632 } {   779 } {  1067 } {  1126 } {  1185 } {  1306 }
 {  1373 } {  1384 } {  1472 } {  1607 } {  1731 } {  1756 } {  1854 } {  1907 } {  1982 } {  2029 }
 {    54 } {   225 } {   259 } {   426 } {   449 } {   683 } {   728 } {   911 } {   920 } {  1009 }
 {  1056 } {  1266 } {  1288 } {  1323 } {  1404 } {  1666 } {  1848 } {  1912 } {  1968 } {  1970 }
 {  1997 } {  2021 }

===================================== After Level 2 Merged ==========================================

 {    54 } {   129 } {   133 } {   225 } {   259 } {   354 } {   425 } {   426 } {   449 } {   632 }
 {   683 } {   728 } {   779 } {   911 } {   920 } {  1009 } {  1056 } {  1067 } {  1126 } {  1185 }
 {  1266 } {  1288 } {  1306 } {  1323 } {  1373 } {  1384 } {  1404 } {  1472 } {  1607 } {  1666 }
 {  1731 } {  1756 } {  1848 } {  1854 } {  1907 } {  1912 } {  1968 } {  1970 } {  1982 } {  1997 }
 {  2021 } {  2029 }

这是我的代码:

System.out.printf("\nmy header \n\n", MemberConstant.MERGERSEC);

    for (int i = 0; i < K; i++) {
        for (int j = brds[i].start; j < brds[i].size + brds[i].start; j++) {
            System.out.printf(" {");
            System.out.printf("%6d ", a[j]);
            cnt1++; 
            System.out.printf("}");
            if(cnt1 == 10) {
                System.out.printf("\n");
                mod2++;
                cnt1=0;
            }
        }  
    } 

    cnt1=0;
        System.out.printf("my header\n\n", MemberConstant.MERGERSEC2);

        for (int k = 0; k < K; k++) {
        for (int l = brds[k].start; l < brds[k].size + brds[k].start; l++) {
             System.out.printf(" {");
            System.out.printf("%6d ", b[l]);
            cnt1++; 
            System.out.printf("}");
            if(cnt1 == 10) {
                System.out.printf("\n");
                mod2++;
                cnt1=0; 

            }

        }
    }

1 个答案:

答案 0 :(得分:1)

我认为你应该有一个单独的方法来打印数组,另一个循环来询问用户。像这样:

private int printArr(ArrayType a, int start, int rows) {
  rows = Math.min(rows, a.length - start);
  cnt1 = 0;
  for (int i = start; i < rows; i++) {
        for (int j = brds[i].start; j < brds[i].size + brds[i].start; j++) {
            System.out.printf(" {");
            System.out.printf("%6d ", a[j]);
            cnt1++; 
            System.out.printf("}");
            if(cnt1 == 10) {
                System.out.printf("\n");
                mod2++;
                cnt1=0;
            }
        }  
    }
    return start + rows; // current position 
}

并询问用户:

int aStart = 0;
int bStart = 0;
int rows = 20;
do {
  aStart = printArr(a, aStart, rows);
  bStart = printArr(b, bStart, rows);
  // Ask user somehow
} while (//User wants to continue);

假设brdsmod2也在某处宣布