Как найти медиану из 5 целых чисел в java - PullRequest
0 голосов
/ 03 февраля 2020

Итак, я новичок в программировании, и мой учитель хочет, чтобы мы нашли среду, используя операторы if (я его спрашивал, но он на самом деле не помогает), мы не изучили сканер, циклы, массивы и т. Д. c. так что все, что я знаю, это bufferedReader, import. java .io & основы. Я выписал операторы if, но я все еще не понимаю, как заставить его выводить медиану. Числа 1-5, поэтому я знаю, что медиана равна 3. Вот что я имею для операторов if.

        if (num1<num2) 
            System.out.println(num1 + "is less than" + num2);
        if (num1<num3)
            System.out.println(num1 + "is less than" + num3);
        if (num1<num4)
            System.out.println(num1 + "is less than" + num4);
        if (num1<num5)
            System.out.println(num1 + "is less than" + num5);
        if (num2>num1)
            System.out.println(num2 + "is greater than" + num1);    
        if (num2<num3)
            System.out.println(num2 + "is less than" + num3);
        if (num2<num4)
            System.out.println(num2 + "is less than" + num4);
        if (num1<num5)
            System.out.println(num1 + "is less than" + num5);
        if (num3>num1)
            System.out.println(num3 + "is greater than" + num1);
        if (num3>num2)
            System.out.println(num3 + "is greater than" + num2);
        if (num3<num4)
            System.out.println(num3 + "is less than" + num4);
        if (num3<num5)
            System.out.println(num3 + "is less than" + num5);
        if (num4>num1)
            System.out.println(num4 + "is greater than" + num1);
        if (num4>num2)
            System.out.println(num4 + "is greater than" + num2);
        if (num4>num3)
            System.out.println(num4 + "is greater than" + num3);
        if (num4<num5)
            System.out.println(num4 + "is less than" + num5);
        if (num5>num1)
            System.out.println(num5 + "is greater than" + num1);
        if (num5>num2)
            System.out.println(num5 + "is greater than" + num1);
        if (num5>num3)
            System.out.println(num5 + "is greater than" + num3);
        if (num5>num4)
            System.out.println(num5 + "is greater than" + num4);

Ответы [ 2 ]

0 голосов
/ 03 февраля 2020

Что делать, если у вас 555 номеров? Не могли бы вы написать снова все возможные комбинации? Это буквально заняло бы дни.

Рассмотрите возможность использования некоторых структур данных, например, используйте массив для хранения ваших чисел:

int[] array = new int[] {1, 2, 3, 4, 5};

Медиана будет элементом в середине, 3.

int[] array2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9};

Медиана здесь равна 5.

Чтобы найти медиану (предположим, числа всегда в порядке), вы можете сделать что-то вроде этого:

  1. Узнать какой размер массива (сколько элементов у вас есть)
  2. Если размер нечетный, то медиана - это элемент в середине
  3. Если размер четный, то медиана - это сумма два средних элемента, разделенные на 2

Пример использования массива:

 int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
 int size = array.length;
    if (size % 2 == 1) { // odd
        System.out.println("Median: : " + array[size / 2]);
    } else { // even
        int sum = array[size / 2 - 1] + array[size / 2];
        System.out.println("Median: : " + (float) sum / 2);
    }

Однако у меня есть ощущение, что, хотя этот код очень прост, он все еще может быть совершенно непонятным для вы. Я настоятельно рекомендую вам прочитать о массивах и коллекциях в Java - просто чтобы сэкономить ваше время.

0 голосов
/ 03 февраля 2020

Я не хочу давать вам ответ; но вот несколько советов.

if операторы могут принимать несколько условий в скобках, например:

if(a>b && b < 10){...}

Вы также можете вкладывать if операторов друг в друга:

if(a>b){
   if(b<10){...}
}

И, наконец, у вас может быть условие else, которое будет выполняться, когда условие не выполнено

if(a>b){
   ...
} else {
   ...
}

Конечно, все они могут быть объединены вместе, если вложены, если несколько условия и условия вложены в блоки else.

Как я уже сказал, я не хочу давать вам ответ на ваш вопрос, так как не верю, что это будет наиболее эффективным способом научиться делать это. ; но, надеюсь, это несколько проницательно и значимо для вашего знания и понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...