【问题标题】:Random generated array does not print small value correctly [duplicate]随机生成的数组无法正确打印小值[重复]
【发布时间】:2018-11-15 05:44:21
【问题描述】:

我的代码无法正常工作,因为它总是将小值打印为 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

【问题讨论】:

  • 因为0小于1到9

标签: java loops


【解决方案1】:

这是因为small为0,每个随机值都会在0到10之间产生,所以0是最小的。

要修复它,请更改为

int small = Integer.MAX_VALUE;

【讨论】:

    【解决方案2】:

    当您启动 int 数组 int [] num=new int[10]; 时,它会将 zero(0) 分配给所有索引。

    所以,当你让 int small=num[0]; 它包含 zero(0)

    所以,无论值是什么,后面的块总是将small 比较为零(0)。所以,不要更改 small 变量!

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

    分配int small=Integer.MAX_VALUE;int big=Integer.MIN_VALUE; 然后一切正常!

    【讨论】:

      【解决方案3】:

      int small 声明为:

      int small = Integer.MAX_VALUE;
      

      现在它可以工作了。

      注意:最好将int big声明为

      int big = Integer.MIN_VALUE;
      

      【讨论】:

        【解决方案4】:

        在另一个循环中初始化数组。当你初始化 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);
            }
        }
        

        【讨论】:

          【解决方案5】:

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

          按照其他人的建议使用int small = Integer.MAX_VALUE;

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

          【讨论】:

            猜你喜欢
            • 2015-07-06
            • 2015-07-02
            • 2014-01-11
            • 2014-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-02
            • 1970-01-01
            相关资源
            最近更新 更多