簡體   English   中英

如何找到數組中的最大值和最小值

[英]How to find the maximum and minimum value in array

嗨,我是 Java 編程新手,目前正在學習數組。 所以我想要做的是找到數組的最大值和最小值,但由於某種原因我找不到最小值但我可以找到最大值。

這是我的輸出:

Enter the number of elements: 5                                                                                                               
Enter a number: 1                                                                                                                             
Enter a number: 2                                                                                                                             
Enter a number: 3                                                                                                                             
Enter a number: 4                                                                                                                             
Enter a number: 5                                                                                                                             
The maximum number is:5
The minimum number is: 0

我使用相同的語句通過僅更改運算符來獲取最大值。 但不知何故,輸出始終為零。

這是我的代碼:

import java.util.Scanner;

public class Main
{
    public static void main(String[] args) {



        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of elements: ");
        int elements = input.nextInt();

        int [] array = new int[elements];
        int max = array[0];
        int min = array[0];

        for(int i = 0; i<elements; i++){

            System.out.print("Enter a number: ");
            array[i] = input.nextInt();

            if(array[i]>max){
                max = array[i];

            }
            if(array[i]<min){
                min = array[i];
            }

        }

        System.out.print("The maximum number is:" + max);
        System.out.println();
        System.out.print("The minimum number is: " + min);






    }
}

任何幫助將不勝感激謝謝!

int min = array[0];

該語句在array[0]為零時執行。

此時您還沒有讀取任何值,因此請使用以下命令初始化您的最小值和最大值:

int max = Integer.MIN_VALUE;
int min = Integer.MAX_VALUE;

事實上,您根本不需要數組,因為您不在循環之后使用它。 只需將掃描儀結果分配給在循環內聲明的int變量。

將最大值分配給最小值,將最小值分配給最大值

min = Integer.MAX_VALUE;
max = Integer.MIN_VALUE;

當您使用 new 運算符分配內存時,

int [] array = new int[elements];

數組的每個元素都初始化為零。

所以當你做int min=array[0] , min 被賦值為 0。然后與 1,2,3,4 和 5 比較,min 是最小的,因此不會改變。

為了解決這個問題,首先使用 for loop 輸入數組中的所有元素,然后將 min 和 max 初始化為 array[0]

嘗試這個

import java.util.Scanner;

    public class Main
    {
        public static void main(String[] args) {



            Scanner input = new Scanner(System.in);
            System.out.print("Enter the number of elements: ");
            int elements = input.nextInt();

            int [] array = new int[elements];


            for(int i = 0; i<elements; i++){

                System.out.print("Enter a number: ");
                array[i] = input.nextInt();
             }
            int max = array[0];
            int min = array[0];
            for(int i = 0; i<elements; i++){
                if(array[i]>max){
                    max = array[i];

                }
                if(array[i]<min){
                    min = array[i];
                }


           }

            System.out.print("The maximum number is:" + max);
            System.out.println();
            System.out.print("The minimum number is: " + min);






        }
    }

Integer 的默認初始值是 0。因此,當檢查它是否大於輸入值時,默認值保持不變

為什么首先需要一個數組?

Scanner console = new Scanner(System.in);
int entries = console.nextInt();
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for(int i = 0; i < entries; i++){
   int temp = console.nextInt();
   if(temp < min) {
        min = temp;
   }
   if (temp > max) {
        max = temp;
   }
}

定義整數數組時:

int [] array = new int[elements];

數組的所有元素的默認值均為0。

在這里,您是在從用戶處獲取輸入之前分配min的值,因此將其分配為0。

為避免此問題,您需要分別將min和max分配給max和minimum整數值。

min = Integer.MAX_VALUE;
max = Integer.MIN_VALUE;

否則,如果您的值不小於0,則它將始終返回最小值0。

暫無
暫無

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

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