簡體   English   中英

如何在此代碼中獲得數組中的最高和最低值?

[英]How to get the highest and lowest value in the array in this code?

我需要幫助以獲取數組中的最高和最低值。 我看到有人使用Math.maxMath.min但是您如何應用它呢? 在這段代碼中?

import java.util.Scanner;
public class CaseStudy2A {
    public static void main(String[] args) {
        Scanner inp = new Scanner (System.in);
        int inpNum;
        System.out.print("Enter Number: ");
        inpNum = inp.nextInt();

        int num[]=new int [inpNum];

        int y=0;
        int accu;

            for(int x=0;x<inpNum;x++) {
                y=y+1;

                System.out.print("\nNumber [" + y + "] : ");
                accu = inp.nextInt();

                num[x]=accu;
            }
        for(int x=0;x<inpNum;x++)
        System.out.print(num[x] + " ");
    }
}

如果性能無關緊要,則可以從數組創建一個集合,然后使用集合max和min。

如果您想通過Math。*解決作業,可以使用以下代碼段:

int max= Integer.MIN_VALUE;
int min= Integer.MAX_VALUE;
for(int x=0;x<inpNum;x++){
 max = Math.max(max,x);
 min = Math.min(min,x);

我覺得這是家庭作業...但是有幾種方法可以做到。 您可以遍歷數組中的每個元素,將您遇到的第一個元素存儲到變量中,然后再檢查每個元素以查看其是否大於當前存儲的元素。 如果是,則用該變量覆蓋該變量並繼續。 最后,您將擁有最大的一個。

另一種方法是對數組進行排序,然后獲取數組中的第一個和最后一個元素,從而為您提供最大和最小的元素。

[試圖編輯我的帖子,所以我決定自己進行改進]

介紹

int min=0, max=0;

然后,在第一個“ for”循環之后,當所有數組值都已知時,請執行以下操作:

min=max=num[0];
for(int x=1; x<inpNum; x++) {
  if(num[x]<min) {
    min=num[x];
  }
  else if(num[x]>max) {
    max=num[x];
  }
}

這比調用Math.min / max更快。 其實,這是因為幾乎總是你最終超過2N比較少(其中n是數組的長度)來計算最小和最大的,因為當你發現一個新的最小你不檢查一個新的最大的最快方式。 這就是為什么不使用三元(?:)比較的原因。 (您還必須檢查inpNum是否為正。)

暫無
暫無

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

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