Podmienka if nevracia true – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmienka if nevracia true – Java – Fórum – Programujte.comPodmienka if nevracia true – Java – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1602 příspěvků
22. 7. 2014   #1
-
0
-

Ahojte, mám nasledujúci kod:

public static boolean a(int c) {  
        if(c == 5) {  
            return true;  
        } else  
            c++; 
            a(c);  
            System.out.println("run again " + c);  

        return false;  
}  
	
public static void main(String[] args) throws IOException {
		
	System.out.println(a(1));
}

vystup metody je: 

run again 5
run again 4
run again 3
run again 2
false

nerozumiem prečo, "c" je na začitku 1 a postupne zvyšujem, prečo vystup klesa od 5 po 2? ako sa dostanem ku výstupu "true"? vysvetli mi to niekto prosím Vás

Nahlásit jako SPAM
IP: 87.244.194.–
p3can
~ Anonymní uživatel
312 příspěvků
22. 7. 2014   #2
-
0
-

protoze delas rekurzi. kdyz prehodis tyto radky naopak

System.out.println("run again " + c);
a(c);

tak budes mit vystup 2 3 4 5

Nahlásit jako SPAM
IP: 77.92.213.–
KIIV
~ Moderátor
+43
God of flame
22. 7. 2014   #3
-
0
-

+ ten vypis a volani rekurze mas podezrele odsazeny, ale NEPATRI to k tomu ELSE!!

(ale je to spis formalita, protoze to else tam byt vubec nemusi)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Flowy0
Věrný člen
22. 7. 2014   #4
-
0
-

tlacis vystup z metody a s parametrom 1 ... metoda a s parametrom 1 ma vystup false (true vracia len ak je parameter 5)

je to prevratene pretoze ked zavolas metodu a(1) ta zavola a(2) ... ked sa zavola a(5) tak uz nevola dalej ale prerusi sa (return) ... potom metoda a(4) ktora zvysila c = 5 bude pokracovat a vytlaci tvoj string ... ked tato skonci tak pokracuje ta ktora ju vyvolala - a(3) ... atd ... na konci sa dokonci a(1) a vrati false ... toto je odpoved aj na to ako spravit aby vratila true

Nahlásit jako SPAM
IP: 91.148.1.–
https://github.com/Flowy
Kit+15
Guru
22. 7. 2014   #5
-
0
-

#1 Martin
Ta metoda je hodně podivná, protože dělá dvě nesouvisející věci: Něco dělá (println). a něco zjišťuje (boolean). Rozděl to.

Nahlásit jako SPAM
IP: 46.174.37.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

3vlákna while(true) — založil JIRKAS

Scanner - natsavení true hodnoty — založil allanwalker

Podmienka v C++ — založil FeFeronka

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý