随机生成的数组无法正确打印小值

  • 本文关键字:打印 数组 随机 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大8小型0

错误结果:6 8 8 1 7 5 2 6 8 4大8小型0

这是因为small是0,并且每个随机值都将在0和10之间生成,所以0是最小的。

要修复它,请更改为

int small = Integer.MAX_VALUE;

启动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;,那么它就会全部工作!

int small声明为:

int small = Integer.MAX_VALUE;

现在它会起作用的。

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

int big = Integer.MIN_VALUE;
在另一个循环中初始化数组。当初始化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);
    }
}

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

如其他人所建议的使用CCD_ 13

永远记住,当你将某个东西初始化为存储最大值的变量时,初始化一个像0这样的小值,对于一个小变量,用尽可能大的数字初始化它。

最新更新