2016-04-29 3 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

Идея такой же, как Васко, но мой код начинается с массивом строк и использовать 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, потому что вы просто хотите проверить min и max, если вы хотите сделать что-то еще, например, рассчитать среднее значение, List лучше, конечно.

Смежные вопросы