随机生成的数组不能正确打印较小的值

时间:2018-11-15 05:44:21

标签: java loops

我的代码不起作用,因为它始终将较小的值打印为0。 预先感谢您的帮助。

public class Tests {

    public static void main(String [] args){
        int [] num=new int[10];
        Random random= new Random();
        //1st time both big and small value will be at 0
        int big=num[0];
        int small=num[0];

        for(int i=0;i<num.length;i++){

            num[i]=random.nextInt(10);
            System.out.print(num[i] +" ");

            if(num[i]>big){
                big=num[i];             
            }   
            if(num[i]<small){
                small=num[i];
            }
        }
        System.out.println();
        System.out.println("Big " + big);
        System.out.println("Small " + small);
    }
}

请参阅以下问题: 好的结果:

5 1 1 3 8 3 5 1 1 0 大八 小0

不良结果: 6 8 8 1 7 5 2 6 8 4 大八 小0

5 个答案:

答案 0 :(得分:2)

这是因为small为0,并且每个随机值都会在0到10之间生成,因此0是最小的。

要修复此问题,请更改为

int small = Integer.MAX_VALUE;

答案 1 :(得分:2)

启动int数组int [] num=new int[10];时,它为所有索引分配了zero(0)

因此,当您让int small=num[0];包含零(0)

因此,不管传入的值是多少,后续块始终将small比较为零(0)。因此,不要更改small变量!

if(num[i]<small){
   small=num[i];
}

分别分配int small=Integer.MAX_VALUE;int big=Integer.MIN_VALUE;,一切都会正常!

答案 2 :(得分:1)

int small声明为:

int small = Integer.MAX_VALUE;

现在它可以工作了。

注意:而且最好将int big声明为

int big = Integer.MIN_VALUE;

答案 3 :(得分:0)

在另一个循环中初始化数组。当您将int数组初始化为0时。

public class Test {

public static void main(String[] args) {
        int[] num = new int[10];
        Random random = new Random();
        for (int i = 0; i < num.length - 1; i++) {
            num[i] = random.nextInt(10);
        }
        //1st time both big and small value will be at 0
        int big = num[0];
        int small = num[0];

        for (int i = 0; i < num.length - 1; i++) {
            System.out.print(num[i] + " ");

            if (num[i] > big) {
                big = num[i];
            }
            if (num[i] < small) {
                small = num[i];
            }
        }
        System.out.println();
        System.out.println("Big " + big);
        System.out.println("Small " + small);
    }
}

答案 4 :(得分:0)

当您说int [] num=new int[10];时,num数组将对所有10个位置初始化为0,即num [0] = 0,num [1] = 0 ...

,因此,根据其他人的建议,请使用int small = Integer.MAX_VALUE;

永远记住,当您将一些东西初始化为存储最大的变量时,初始化一个小的值(如0),并为一个小的变量初始化一个尽可能大的数字。