код №1:
package com.javarush.task.task02.task0216;
public class Solution {
public static int min(int a, int b, int c) {
if(a<=b && a<=c){
return a;
} else if (b<=c && b<=a){
return b;
} else {
return c;
}
}
public static void main(String[] args) throws Exception {
System.out.println(min(1, 2, 3));
System.out.println(min(-1, -2, -3));
System.out.println(min(3, 5, 3));
System.out.println(min(5, 5, 10));
}
}
код №2:
package com.javarush.task.task02.task0216;
public class Solution {
public static int min(int a, int b, int c) {
if(a<=b && a<=c){
return a;
} else if (b<=c && b<=a){
return b;
} else if (c<=a && c<=b) {
return c;
}
}
public static void main(String[] args) throws Exception {
System.out.println(min(1, 2, 3));
System.out.println(min(-1, -2, -3));
System.out.println(min(3, 5, 3));
System.out.println(min(5, 5, 10));
}
}
пишет , что метод должен вернуть , значение(типа не хватает return... вроде цикл 1 и тот же.... почему не компилит, объясните плиз! заранее спасибо!!!
Виталий
8 уровень
почему код №2 не компилит???
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Виталий
17 декабря 2018, 22:09
всем спасибо!!! понял!
0
denis
17 декабря 2018, 21:48
На будущее. Пользуйся тегом <code>.
+1
Sergey MorozExpert
17 декабря 2018, 21:33полезный
К тому же код не одинаков: в 1 варианте есть выход для компилятора - если не выполнятся два первых условия, то по дефолту выполнится третье и будет return при любом раскладе. А во 2 варианте такой лазейки не предусмотрено, т.к. условие поставлено жестко (else if вместо просто else), соответственно дело до return может не дойти.
+1
Илья ГековMaster
17 декабря 2018, 21:28решение
Потому что return во всех случаях зависит от определенных условий. Компилятор не проверяет возможна ли ситуация, когда ни одно из условий не выполнится или нет, для него такой код означает, что возможна ситуация, что ни до одного return дело не дойдет.
+2
Виталий
17 декабря 2018, 21:10
P.s. код №1 решил задачу....
0