Java:是否有可能在for循环中进行x次换行?

时间:2013-08-13 09:22:33

标签: java arrays for-loop line-breaks

我尝试使用谷歌搜索StackOverflow我的问题,但我没有找到任何答案。

我制作了一个数组,其中大小和值都是随机生成的。当数组值打印20次后,我想进行换行,但不使用始终换行打印剩余值。

这是我的代码:

public static void catArr() {

    Random rändöm = new Random();
    int size = rändöm.nextInt(100);

    int[] arr = new int[size];

    for (int i = 0; i < size; i++) {

        arr[i] = rändöm.nextInt(100);
    }

    Arrays.sort(arr);

    for (int i = 0; i < size; i++) {

        System.out.print(" " + arr[i]);
        if (i > 20)
            System.out.println(); //How to do this only once?
        else if (i > 40)
            System.out.println(); //Same here?
    }

}

这是生成的输出之一:

 3 8 10 25 30 31 34 38 46 50 55 59 62 66 67 68 68 68 72 76 76 81
 82
 83
 84
 86
 91
 92
 93
 94
 94
 97

我认为解决这个问题的一种方法是使用2-D数组,但我想知道是否还有其他方法。

谢谢Patric,我得到了想要的结果:

0   2   3   7   7   9   11  14  14  16  18  19  24  25  26  28  28  30  30  31  
31  33  33  34  41  41  41  42  43  44  45  46  51  51  52  53  59  60  61  62  
62  62  63  65  65  67  67  68  69  70  74  74  76  78  82  83  84  84  87  88  
89  93  93  94  94  94  95

5 个答案:

答案 0 :(得分:6)

尝试使用

if ( ( i % 20 ) == 0 ){
    System.out.println();
}

如果我除以20则没有余数,则打印一个新行!

答案 1 :(得分:1)

从字面上看,这将做你想要的事情:

    if (i == 20)
        System.out.println();
    else if (i == 40)
        System.out.println();

但我觉得你真的想在20日,40日,60日之后添加换行符等。

    if (i % 20 == 0) 
        System.out.println();

如果你想在结尾只输出一个换行符,那么你需要这样的东西:

    for (int i = 0; i < size; i++) {
        if (i > 1 && i % 20 == 1) {
            System.out.println();
        System.out.print(" " + arr[i]);
    }
    System.out.println();

答案 2 :(得分:1)

也许

if (i % 20==0) 
如果出现问题,

可以解决你的问题。

答案 3 :(得分:1)

使用(++i % 20) == 0并从循环中删除i++; 预增量避免第一次不需要的换行。

答案 4 :(得分:0)

您可以使用布尔值为您的系统输出。

boolean myBoolean = true;
if(myBoolean){
    //print
    myBoolean = false; //set boolean to false.
}

另一方面,在我的偏好中,我仍然坚持使用整数标记。

int isTrue = 1;
if(isTrue == 1){
    //print
    isTrue = 0;
}