1

Google で 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?
    }

}

これは、生成された出力の 1 つです。

 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次元配列を使うのも一つの方法だと思いますが、他に方法があれば教えていただきたいです。

パトリックのおかげで、私は望んでいた結果を得ました:

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
4

5 に答える 5

1

使用してループから(++i % 20) == 0削除します。pre-incrementは、最初の不要な改行を回避します。i++

于 2013-08-13T09:29:52.627 に答える
1

文字通り、これはあなたが望むようにします:

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

しかし、実際には 20 番目、40 番目、60 番目などの後に改行を追加したいような気がします。

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

最後に正確に 1 つの改行を出力する場合は、次のようなものが必要です。

    for (int i = 0; i < size; i++) {
        if (i > 1 && i % 20 == 1) {
            System.out.println();
        System.out.print(" " + arr[i]);
    }
    System.out.println();
于 2013-08-13T09:24:54.570 に答える
1

多分

if (i % 20==0) 

else if 問題を解決できます。

于 2013-08-13T09:26:03.613 に答える
0

Sys out にはブール値を使用できます。

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

一方、私の好みでは、整数のフラグ付けに固執しています。

int isTrue = 1;
if(isTrue == 1){
    //print
    isTrue = 0;
}
于 2013-08-13T09:27:57.983 に答える