猿问

Java List:调用Arrays.fill()填充数组时,为什么会出现一些意想不到的元素?

我是一个初级程序员,第一次在这里提问,如果对格式有任何担心,我会感到非常抱歉。首先,感谢您的回答、耐心和原谅。


实际上问题是“循环直到找到 4 张不同颜色的扑克牌”。我使用一个数组来表示卡号,并使用一个数组来表示它们的颜色。并且我用for语句填充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);*/

}


慕尼黑5688855
浏览 224回答 1
1回答

慕尼黑8549860

的toIndex参数Arrays.fill是独占的,所以改成:Arrays.fill(cardNo,&nbsp;i*13,&nbsp;(i+1)*13&nbsp;-&nbsp;1,&nbsp;i+1);到Arrays.fill(cardNo,&nbsp;i*13,&nbsp;(i+1)*13,&nbsp;i+1);Javadoc:void java.util.Arrays.fill(int[] a, int fromIndex, int toIndex, int val)将指定的 int 值分配给指定整数数组的指定范围内的每个元素。要填充的范围从 index fromIndex,inclusive 扩展到 index toIndex,exclusive。(如果 fromIndex==toIndex,则要填充的范围为空。)
随时随地看视频慕课网APP

相关分类

Java
我要回答