Имеется три числа: 10, 20, 30. Как найти среднее из них (не самое большое и не самое маленькое), без множества условий?
Отсортировать и взять среднее.
public static void main(String[] args) {
int[] numbers = new int[] {31, 6, 13};
Arrays.sort(numbers);
System.out.println(numbers[1]);
}
int max = Math.max(Math.max(a,b), c);
int min = Math.min(Math.min(a,b), c);
int mid = a + b + c - (min + max);
Можно через условие тернарными операторами
int mid = (a > b)? ((c<b)?b:((c<a)?c:a)): ( (a>c)?a:(b>c)?c:b);
Держи ещё вариант с одним ифом, а не несколькими:
private int middleOfThree(int[] input) {
int x = Math.max(input[0], input[1]);
int y = Math.max(input[0], input[2]);
if (x == y) {
return Math.max(input[1], input[2]);
} else {
return Math.min(x, y);
}
}
import static java.lang.Math.*;
int[] digits = {20, 10, 30};
System.out.println(max(max(min(digits[0], digits[1]), min(digits[1], digits[2])), min(digits[0], digits[2])));
Вам в любом случае придется использовать условия - пусть даже внешне они будут скрыты в вызовах готовых методов для сортировки (Collections.sort
, Arrays.sort
и т.п.) или получения мин./макс. значений (Math.min
, Math.max
и т.п.). Лучше написать простенькую функцию с парой условий - это гарантированно будет работать быстрее.
private static int getMed(int a, int b, int c) {
return (a >= b && a <= c) || (a <= b && a >= c) ? a : ((b >= a && b <= c) || (b <= a && b >= c) ? b : c);
}
Решение, используя сеть сортировки, построенной на основе метода пузырьков, из ответа @Gyorgy Szekely:
int median = Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));
Полный пример:
public class MedianOf3 {
public static void main(String[] argv) {
System.out.println(median(10, 20, 30));
}
public static int median(int a, int b, int c) {
return Math.max(Math.min(a, b), Math.min(Math.max(a, b), c));
}
}
Вывод:
20
См. Fastest way of finding the middle value of a triple?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите, где может быть ошибкаЗдесь происходит вставка данных и обновление, вставка работает при обновлении возникает ошибка: Exception in thread...
Есть класс Findjava для поиска всех файлов в папках и подпапках