Javaのリスト:私は配列を埋めるためにArrays.fill()を呼び出すと、なぜそれが、いくつかの予期せぬ要素が表示されますか?

波:

私は初心者プログラマです、そしてそれは、私は本当に申し訳ございませんでしょう形式についての心配がある場合は、ここで質問して初めてです。そして、最初に、あなたの忍耐、そしてあなたの許しのために、あなたの答えをありがとうございました。

実は質問は「あなたは4つの異なる色のポーカーカードを見つけるまでループ」です。そして、私はカード番号を表すために、配列、およびその色を表現する配列を使用します。そして、私は文のことでCARDNO配列を埋め、値は1〜4であり、それは0表示され、私はなぜ知らない、と私は、問題が起こった場所なと思うし、これはすべて私のコードです。

public static void collect() {
    int num=0;
    //represent 52 Poker Cards
    int [] cardNo=new int[52];
    List list=new ArrayList<>();
    // `int[] color=new int[4]` to represent 4 colors, so the value 
    // of cardNo[] elements is the Color.
    for(int i=0;i<4;i++) {
        Arrays.fill(cardNo, i*13, (i+1)*13-1, i+1);
    }
    for(int n:cardNo) {
        list.add(n);
    }
    Collections.shuffle(list);
    // I use this for statement to check if it's worry with Arrays.fill(),
    // or it's about the list.add().
    for(int i:cardNo) {
        System.out.print(i+" ");
    }
    System.out.println(list);

    /*int[] color=new int[4];
    while(color[0]==0||color[1]==0||color[2]==0||color[3]==0) {
        int n=(int)(Math.random()*53);
        color[(int) list.get(n)-1]++;
        num++;
    }
    System.out.println("Number of picks: "+num);*/
}
彼らは次のとおりでした:

toIndexパラメータがArrays.fill変化するので、排他的です:

Arrays.fill(cardNo, i*13, (i+1)*13 - 1, i+1);

Arrays.fill(cardNo, i*13, (i+1)*13, i+1);

Javadoc:

ボイドjava.util.Arrays.fill(INT [] A、INTたfromIndex、toIndexのINT、INTヴァル)

割り当てintの指定された配列の指定された範囲にある各要素に、指定されたint値。充填される範囲は、包括的指標たfromIndex、から延びるインデックスtoIndexの、排他的に(たfromIndex == toIndexの場合、充填するtherangeは空です。)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=203888&siteId=1