Как бы я найти 2-е наименьшее число в данном наборе двойных переменных - PullRequest
0 голосов
/ 12 октября 2019
public class TwoSmallest {

public static void main(String[] args) {

Double min = Double.MAX_VALUE;
Double mintwo = Double.MAX_VALUE;

    for(int i = 0; i < args.length; i++){
            Double temp = Double.parseDouble(args[i]);
            if(temp < min){
                min = temp;
            }
        }
    for(int i = 0; i < args.length; i++){
        Double temp2 = Double.parseDouble(args[i]);

        if(temp2 < mintwo && temp2 != min){
                mintwo = temp2;
            }
        } 
        System.out.println(min);
        System.out.println(mintwo); 
    }
 }

Я пытаюсь найти наименьшее и 2-е наименьшее в наборе чисел, я не уверен, как это сделать.

1 Ответ

2 голосов
/ 12 октября 2019

Вам нужно только один раз повторить массив значений типа double. Затем мы можем использовать следующую логику при решении, что делать с входящими значениями:

  • Если значение меньше наименьшего, назначить его как наименьшее и также от предыдущего наименьшего значения ко второму наименьшему
  • Если значение больше, чем наименьшее, но меньше второго наименьшего, просто назначьте его второму наименьшему
  • В противном случае ничего не делать

Вот ваш обновленный код:

public static void main(String[] args) {
    Double min = Double.MAX_VALUE;
    Double mintwo = Double.MAX_VALUE;

    for (int i=0; i < args.length; i++) {
        Double temp = Double.parseDouble(args[i]);
        if (temp < min) {
            mintwo = min;
            min = temp;
        }
        else if (temp < mintwo) {
            mintwo = temp;
        }
    }

    System.out.println(min);
    System.out.println(mintwo);
}
...