繁体   English   中英

为什么存在未显示的元素?

[英]Why is there an element that is not being displayed?

我正在练习在数组中创建随机生成的整数,然后将数组中的元素随机化。 当我打印数字时一切都很好,但是当我显示随机元素时,似乎有一个元素不会打印。 有没有我要走的步骤?

public class shufflingArrays {
public static void main(String[] args) {


    int[] myList = new int[10];
    System.out.println("Numbers:");
    for(int i = 0; i < myList.length; i++) {
        myList[i] = (int)(Math.random() * 100);
        System.out.print(myList[i] + " ");
    }
    System.out.println("\nRandomized:");

    for (int i = myList.length - 1; i > 0; i--){
        //Generate index j randomly with 0 <= j <= i
        int j = (int)(Math.random() * (i + 1));

        //Swap myList[i]; with myList[j]
        int temp = myList[i];
        myList[i] = myList[j];
        myList[j] = temp;
        System.out.print(myList[i] + " ");
    }   
}

for循环的条件i > 0 ,这意味着当i == 0时它将终止并且不打印出第一个数组元素。

但是,如果您正在执行Fisher-Yates混洗,则确实需要将其从myList.length-1更改为1,因此您的初始代码是正确的。 然后,您将无法从同一循环中打印出数组中的所有元素,因此要么在打印出元素后使用另一个循环,要么添加System.out.print(myList[0]); 后。

例如: for (int i = 4; i > 0; i--)

仅在i = 4, 3, 2, 1 4、3、2、1时运行for循环,而在i = 0时不运行,因为条件i > 0 for (int i = myList.length - 1; i > 0; i--)i > 0条件更改为i >= 0 ,您将得到想要的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM