Napisałem kod i działa, nie do końca wiem dlaczego musiałem użyć "<=" , samo "<" zwracało nie zaliczone zadanie.
package pl.codegym.task.task02.task0216;
/*
Najmniejsza z trzech liczb
*/
public class Solution {
public static int min(int a, int b, int c) {
//tutaj wpisz swój kod
if (a <= b && a <= c)
{
return a;
}
else if (b <= a && b <=c)
{
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));
}
}
Spoiler Dlaczego "<=" w warunkach ?
Dyskutowane
Komentarze (4)
- Popularne
- Najnowsze
- Najstarsze
Musisz się zalogować, aby dodać komentarz
Jakub Góźdź
20 lutego 2020, 14:20przydatny
Spróbujmy do tego dojść po kolei. Zdefiniowałeś problem, w którym twierdzisz, iż nie działa Ci kod, jak przedstawiono poniżej (i słusznie):
1. W wyrażeniu if stosuje się najczęściej dwa operatory logiczne:
&&
||
1.1. Operator && działa jak spójnik i. To znaczy, że aby całe wyrażenie zwróciło prawdę oba składniki muszą być prawdą
false && false = false
false && true = false
true && false = false
true && true = true
1.2. Tak czysto informacyjnie: inny cząsto stosowany operator || działa jak spójnik lub. To znaczy, że aby całe wyrażenie zwróciło prawdę co najmniej jeden ze składników musi być prawdą
false && false = false
false && true = true
true && false = true
true && true = true
+10
Jakub Góźdź
20 lutego 2020, 14:21
2. Przeanalizujmy zatem ten niedziałający kod, dla przykładowych danych: a = 5, b = 5, c = 10 (ostatni przykład z twojego kodu)
2.1. W pierwszym IFie pierwszy warunek zwróci false ponieważ: 5 < 5 = false (pięć nie jest mniejsze od pięciu). Drugi warunek zwróci true ponieważ 5 < 10 = true (pięć jest mniejsze od 10). Całościowo wyrażenie zwróci false, gdyż nie spełnione są wszystkie warunki cząstkowe (o czym mówi operator logiczny &&. Zatem algorytm nie zwróci liczby a =5.
2.2. w drugim IFie pierwszy warunek zwróci false ponieważ: 5 < 5 = false (pięć nie jest mniejsze od pięciu). Drugi warunek zwróci true ponieważ 5 < 10 = true (pięć jest mniejsze od 10). Całościowo wyrażenie zwróci false, gdyż nie spełnione są wszystkie warunki cząstkowe (o czym mówi operator logiczny &&. Zatem algorytm nie zwróci liczby b =5.
2.3. zatem zostanie wykonany blok kodu z wyrażenia else. Wyrażenie else należy czytać w przeciwnym razie. Czyli jeśli nie spełniono powyższych warunków to ostatecznie wykonaj mój blok kodu. Zatem Kod ten zwróci c=10.
Jak widać kod nie zwraca najmniejszej liczby.
W ramach ćwiczeń zamień sobie znaki < na <= i przeanalizuj kod analogicznie do powyższego.
+14
Jakub Bryjan
21 lutego 2020, 08:07
Dzięki Wielkie ! Super wyjaśnienie.
0
Dominik
17 maja 2020, 10:45
Mega wyjaśnione! :)
0