[英]How to get the highest and lowest value in the array in this code?
我需要幫助以獲取數組中的最高和最低值。 我看到有人使用Math.max
和Math.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.