Wpis z mikrobloga

Mam już trochę nauki za sobą ale męczy mnie jedna rzecz. Czy może mi ktoś wytłumaczyć różnicę?
http://codingbat.com/prob/p140449

Mój kod wygląda tak:

public boolean parrotTrouble(boolean talking, int hour) {
if (talking == true && (hour < 7 || hour > 20)){
return true;
}else return false;
}

a kod z podpowiedzi tak:

public boolean parrotTrouble(boolean talking, int hour) {
return (talking && (hour < 7 || hour > 20));
}

Nie znalazłem w dokumentacji dlaczego tak jest. Czy return w tej metodzie zawsze zwraca true? I skąd kompilator wie, że to jest warunek? Kompletnie tego nie pojmuję...
#programowanie #naukaprogramowania #java
  • 21
@pottymouth: jeśli papuga nie gada to nigdy nie będziesz miał problemu dodatkowo nie może gadać tylko w godzinach przed 6, albo po 20.
Więc warunek będzie taki

if(talking && (hour < 7 || hour > 20))
talking to true lub false więc jest ok i nie musi być w ()
hour < 7 to drugi warunek
hour > 20 to trzeci warunek ale chcesz sprawdzać czy jeden lub drugi jest spełniony
@Xerlathoatl: @sokytsinolop: Może źle się wyraziłem. W moim kodzie została użytka instrukcja warunkowa if, która zwraca true i false. W kodzie z hinta jest tylko i wyłącznie return. Chciałbym bliżej poznać tego działanie ale nie wiem nawet gdzie szukać. Albo coś pominąłem...
@sokytsinolop: stoję przed jakąś głupią ścianą ale chciałbym bardzo dokładnie rozumieć język. O ile dobrze pamiętam Boolean zawsze standardowo zwraca false? Więc, jeżeli wartość z returna zwróci nam true to jest po sprawie?
@pottymouth: w tym przypadku masz funkcję która chcesz żeby zwróciła true lub false

twój warunek

(talking == true && (hour < 7 || hour > 20))
to tak na prawdę
boolean w zależności od danych false lub true
więc jeśli zrobisz

return (talking == true && (hour < 7 || hour > 20))
program wykona
return true, albo return false w zależności od parametrów

if sprawdza czy podany warunek jest
@sokytsinolop: to akurat zależy od języka, pamiętam jak na jakimś wykładzie prowadzący spotkał się z sytuacją gdzie w jednych językach to jest jeden bit 0 bądź 1, a w innych True to same jedynki(VB?), utrudniając zabawę korzystając z wielu języków jednocześnie ( )
@pottymouth:
return to po prostu to co dana funkcja zwróci

public boolean parrotTrouble(boolean talking, int hour) {
tutaj określasz jakiego typu będzie wartość zwrócona w tym przypadku boolean (public określa dostęp do metody)
więc ta funkcja może zwrócić tylko 2 wartości (true albo false)

ale jakbyś miał taką funckje

public boolean test(boolean parametr) {
return parametr;
}

i wywołał ją gdzieś indziej

boolean test1 = test(true);
boolean test2 = test(false);

to
@pottymouth: po prostu twoje pytania są na poziomie gimnazjalisty, który pierwszy dzień uczy się programowania, a ty już spędziłeś nad tym jednak parę tygodni xD bez urazy, śmieszne po prostu xDD ( ͡° ͜ʖ ͡°)
@pottymouth: zwraca ci wynik operacji talking && .... Więc jeśli wynik operacji jest true to zwraca true, jesli false to zwraca false.
Kod wyzej działa dokładnie tak samo.