在java中随机生成的数组中获取最小值和最大值

时间:2017-05-26 22:16:10

标签: java arrays random

import java.util.Random;

public class Java {

    public static void main(String args[]) {
        int arr[] =  new int[10];
        Random Rand = new Random();

        int max = 0;
        int min = arr[0];


        for(int i = 0; i < 10; i++) {
            int RandNum = Rand.nextInt(10);
            arr[i] = RandNum;

            if (i == 0) System.out.print("[");

            System.out.print(arr[i] + " "); 

            if (i == 9) System.out.println("]");


            if (RandNum>max) {
                max = RandNum;
            }

            if (i > 0) {
                if (RandNum < arr[0]) {
                    min = RandNum;
                }
            }
        }

        System.out.println("Minimum number: " + min);
        System.out.println("Maximum number: " + max);       
    } 
}

我可以获得最大值,但不是最小值..请耐心等待我,我是初学者,我已经尝试将最小值与第一个数组值进行比较,但是我是不确定最小值应该是数组[0]还是仅为0。

6 个答案:

答案 0 :(得分:1)

设置min时,将其设置为零(它是初始化数组中整数的默认值)。因此,生成的数字不会比它大。将min设置为:

min = Integer.MAX_VALUE;

然后检查每个新生成的数字,而不是在循环的第一次迭代中跳过它。

您也没有使用min检查新生成的数字,而是使用数组的第一个数字。使用此:

if(RandNum < min) /*do stuff*/;

希望这有帮助!

答案 1 :(得分:1)

首先,您需要确保将第一个数字视为最小数字,以便为其提供一些初始值,例如

if(i==0){ 
    System.out.print("["); 
    min = RandNum;
} 

使用min

初始化Integer.MAX_VALUE可以避免这种情况

然后,您需要与min进行比较,而不是与array[0]进行比较,

if(i>0){
    if(RandNum<min){
        min = RandNum;
    }
}

另外,为了它的价值,你也可以做到

System.out.println("Minimum number: " + Arrays.stream(arr).min());
System.out.println("Maximum number: " + Arrays.stream(arr).max());   

答案 2 :(得分:1)

您总是与arr [0]进行比较,而不是与&#34; min&#34;进行比较 你应该写:

if(RandNum<min)
{
    min = RandNum;
}

答案 3 :(得分:1)

备注:

  1. minmax设置为第一个数组位置。
  2. 您不需要检查for循环的当前索引是否大于0,只需检查min变量是否大于当前随机数。例如if (min > number) min = number;
  3. 使用更简单的逻辑打印矢量。
  4. 使用您自己的代码:

    import java.util.Random;
    
    public class App {
    
        public static void main(String... args) {
            int count = 10;
            int arr[] = new int[count];
            Random random = new Random();
    
            int max = arr[0];
            int min = arr[0];
    
            for (int i = 0; i < count; i++) {
                int number = random.nextInt(20);
                arr[i] = number;
    
                if (i == 0) {
                    System.out.print("Array: [ " + number + " ");
                } else if (i == count - 1) {
                    System.out.println(number + " ]");
                } else {
                    System.out.print(number + " ");
                }
    
                if (max < number) {
                    max = number;
                }
    
                if (min > number) {
                    min = number;
                }
            }
    
            System.out.println("Minimum number: " + min);
            System.out.println("Maximum number: " + max);
        }
    }
    

    更简单的方法,使用Arrays.toString

    import java.util.Arrays;
    import java.util.Random;
    
    public class App {
    
        public static void main(String... args) {
            int count = 10;
            int array[] = new int[count];
            int min = array[0], max = array[0];
            final Random random = new Random();
    
            for (int i = 0; i < count; i++) {
                int number = random.nextInt(10);
                array[i] = number;
    
                if (min > number) {
                    min = number;
                }
    
                if (max < number) {
                    max = number;
                }
            }
    
            System.out.println("Array: " + Arrays.toString(array));
            System.out.println("Minimum number: " + min);
            System.out.println("Maximum number: " + max);
        }
    }
    

    使用Java Streams API(Java 8或更高版本):

    import java.util.Arrays;
    import java.util.Random;
    
    public class App {
    
        public static void main(String... args) {
            final int[] array = new Random().ints(10).toArray();
            System.out.println("Arrays: " + Arrays.toString(array));
            System.out.println("Minimum number: " + Arrays.stream(array).min());
            System.out.println("Maximum number: " + Arrays.stream(array).max());
        }
    }
    

答案 4 :(得分:0)

 int min=0; // Define with cero
    for(int i=0; i<10; i++)
   {
   // Logic of min
    arr[i] = RandNum;
    if(i ==0) // JUST in the first time
        {
        min=arr[0]
        }
   if(RandNum<min) // This inside your for
        {
        min = RandNum;
   }
}

答案 5 :(得分:-1)

试试这个:

   public static void main(String[] args) {
    int arr[] =  new int[10];
    Random Rand = new Random();


    int max=0;
    int min=11;


    for(int i=0; i<10; i++)
    {
        int RandNum = Rand.nextInt(10);
        arr[i] = RandNum;


        if(i==0) { System.out.print("["); } 

        System.out.print(arr[i] + " "); 

        if(i==9) { System.out.println("]"); }


        if(RandNum>max)
        {
            max = RandNum;
        }



            if(RandNum<min)
            {
                min = RandNum;
            }


    }

    System.out.println("Minimum number: " + min);
    System.out.println("Maximum number: " + max);   

    }