Метод check сначала проверяет, является ли число средним из трех. Если да, выводит его. Дальше он проверяет, является ли число равным одному из трех. Если да, выводит. Если нет, идет сдвиг введенных чисел, и цикл проверок повторяется уже с другим числом. Возможно проблема в следующем: в том случае, если есть одинаковые числа, алгоритм выбирает не "любое" из них, а первое попавшееся? В условии не уточняется это
package com.javarush.task.task04.task0441;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import static java.lang.Math.signum;
/*
Как-то средненько
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(reader.readLine());
int b = Integer.parseInt(reader.readLine());
int c = Integer.parseInt(reader.readLine());
int d;
int i = 0;
while (i == 0) {
i = check(a, b, c);
d = a;
a = b;
b = c;
c = d;
}
}
private static int check(int aa, int bb, int cc) {
if ((signum(aa - bb)) != (signum(aa - cc)))
{
System.out.print(aa);
return 1;
} else if ((aa == bb) || (aa == cc)) {
System.out.print(aa);
return 1;
} else
return 0;
}
}