如何获取String []数组的最大/最小值?

时间:2016-04-29 15:40:08

标签: java arrays

我想到了从here检查数组的最大/最小值。它可以创造奇迹,但我想知道是否有办法将代码拆开并使其更紧凑。也许有某种命令?我不知道,这就是我问你的原因。

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]); 
        }
    }
}

2 个答案:

答案 0 :(得分:4)

此示例将帮助您简化代码

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]);

答案 1 :(得分:0)

这个想法与Vasco的相同,但我的代码以字符串数组开头并使用Set:

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);

此代码不完整,您在使用NumberFormatException

时应该抓住Integer.parseInt(str)

我使用Set因为你只想检查最小值和最大值,如果你想做其他事情,比如计算平均值,列表当然更好。