java - 在 for 循环和数组 printint 之间切换。 java

标签 java arrays printf

如何打印一个数组,每行 10 个项目,共 20 行。然后我想跳到下一个数组并执行相同的操作。之后询问用户输入是否继续。

这是我的示例输出:

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

            }

        }
    }

最佳答案

我认为你应该有一个单独的方法来打印数组和另一个询问用户的周期。像这样的事情:

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 也在某处声明

关于java - 在 for 循环和数组 printint 之间切换。 java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570697/

相关文章:

Java读取文本并将文本数据作为整数进行操作

javascript - 无法通过 redux 动态创建的数组进行映射

arrays - 生成随机数时遇到 "Fatal error: Index fell out of range"错误

java - Jackson : json schema references other schemas, 可以禁用吗?

java - AtomicInteger 增量未按预期运行

java - 调用方法并引用数组

java - 如何构建并返回包含数组中元素的字符串?

Java - 用 printf 动态向左填充

c - 并排打印两个二维数组

C: 以十六进制打印 "unsigned long"的正确方法