2016-04-29 66 views
-2

我想到了從here檢查數組的最大/最小值。它可以創造奇蹟,但我想知道是否有辦法將代碼拆分並使其更加緊湊。也許有某種命令?我不知道,這就是爲什麼我問你。如何獲取String []數組的最大/最小值?

public static void main(String[] args) { 
    String[] input = JOptionPane.showInputDialog("What are you grades this month?\nThey must be seperated by spaces.").split(" "); 

    int smallest = Integer.parseInt(input[0]); 
    int largest = Integer.parseInt(input[0]); 

    for (int i = 1; i < input.length; i++) { 
     if (Integer.parseInt(input[i]) > largest) { 
      largest = Integer.parseInt(input[i]); 
     } 
     else if (Integer.parseInt(input[i]) < smallest) { 
      smallest = Integer.parseInt(input[i]); 
     } 
    } 
} 

回答

3

這個例子將幫助您簡化代碼

Integer [] myIntArray = new Integer[]{0, 5, 2, 11}; 
Arrays.sort(myIntArray); 

//Output smallest 
System.out.println(myIntArray[0]); 

//Output largest 
System.out.println(myIntArray[myIntArray.length - 1]); 
+0

這是有效的,但只適用於最小的數字輸出。我不知道在你的想法中,最大的輸出數據是如何工作的?它只是從輸入的長度中減去數字「1」(即,如果輸入是13個數字,則該行的輸出:System.out.println(myIntArray [myIntArray.length - 1])將是12 )。 –

+0

如果一個數組的長度爲13,那麼數組的位置將被理解爲介於0到12之間,因此長度爲-1。 –

+0

對不起。我忽略了一部分代碼。謝謝。 –

0

的想法是一樣的瓦斯科的,但我的代碼以一個字符串數組開始,並使用設置:

String[] gradesAsString = { "12", "14", "8", "43"}; 
Set<Integer> grades = new HashSet<>(gradesAsString.length); 

for(String grade : gradesAsString) { 
    grades.add(Integer.parseInt(grade)); 
} 

// Sort the collection and get the first (as min) and last (as max) is better for performance 
int max = Collections.max(grades); 
int min = Collections.min(grades); 

這代碼不完整,您在使用時應該注意到NumberFormatExceptionInteger.parseInt(str)

我使用Set,因爲你只是想檢查最小和最大值,如果你想做別的事情,比如計算一個平均值,List當然更好。

相關問題