2016-04-29 47 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当然更好。

相关问题