Недавно начал учить Java и в качестве практической задачи нужно написать приложение, которое должна сравнивать 3 возраста и выдавать результат, кто самый старший, младший и между ними.
Так же была дана "методичка" в которой изложена суть логики всего этого. Но или я дурак, или лыжи не едут, но именно такое решение задачи мне просто не дается.
Я просто путаюсь что с чем уже сравнивал и не могу двинуться дальше.
Я не прошу решения этой задачи, просто подскажите - какие еще варианты решения этой задачи можно использовать ? Метод решения, на котором настаивает учитель мне не подходит.
public class Loader
{
public static void main(String[] args) {
Integer damirAge = 30;
Integer tolanAge = 25;
Integer uraAge = 55;
Integer oldest;
Integer youngest;
Integer middle;
if (damirAge >= tolanAge && damirAge >= uraAge)
oldest = damirAge;
else if (tolanAge >= damirAge && tolanAge >= uraAge)
oldest = tolanAge;
else
oldest = uraAge;
if (damirAge <= tolanAge && damirAge <= uraAge)
youngest = damirAge;
else if (tolanAge <= damirAge && tolanAge <= uraAge)
youngest = tolanAge;
else
youngest = uraAge;
if (damirAge >= tolanAge && damirAge <= uraAge)
middle = damirAge;
else if (tolanAge >= uraAge && tolanAge <= damirAge)
middle = tolanAge;
else
middle = uraAge;
System.out.println("Most young " + youngest);
System.out.println("Middle " + middle);
System.out.println("Most old " + oldest);
}
}
Ответ
Думаю, что задание предполагало всё-таки освоение логики вложенных операторов if.
По анализу математической подоплёки:
Возможных результатов (перестановок) может быть 6 (если не учитывать случаи равенства). На получение 6 исходов нужно по меньшей мере 2.58 бита информации, т.е. эта задача требует в идеале выполнения не более трёх сравнений. Это в данном случае реализуемо - сравнений будет 2 или 3 (в среднем 2.667):
if A > B:
if A > C:
if B > C:
A B C
else:
A C B
else:
C A B
else:
if B > C:
if C > A:
B C A
else:
B A C
else:
C B A
Комментариев нет:
Отправить комментарий