簡體   English   中英

在Java中隨機生成的數組中獲取最小值和最大值

[英]Getting the minimum and maximum values in a randomly generated array in java

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);       
    } 
}

我可以得到最大值,但不能得到最小值..請耐心等待,我是一個初學者,我嘗試過將最小值與第一個數組值進行比較,但是我不確定最小值是否應該為array [0]或僅為0。

設置min時,將其設置為零(這是初始化數組中整數的默認值)。 因此,生成的數字永遠不會大於它。 將min設置為:

min = Integer.MAX_VALUE;

然后,每遍檢查每個新生成的數字,而不是在循環的第一次迭代中跳過它。

您也不用min來檢查新生成的數字,而是用數組的第一個數字檢查。 用這個:

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

希望這可以幫助!

首先,您需要確保將第一個數字視為最小值,以為其賦予一些初始值,例如

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

這可以通過使用Integer.MAX_VALUE初始化min來避免。

然后,您需要與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());   

您總是將其與arr [0]進行比較,而不是與“ min”進行比較。
您應該寫:

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

筆記:

  1. minmax設置為第一個數組的位置。
  2. 您不需要檢查for循環的當前索引是否大於0,只需檢查min變量是否大於當前隨機數即可。 例如, if (min > number) min = number;
  3. 使用更簡單的邏輯來打印矢量。

使用您自己的代碼:

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());
    }
}
 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;
   }
}

嘗試這個:

   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);   

    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM