Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?

[es] :: Java :: Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?

[ Pregleda: 1613 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Stijak
Beograd

Član broj: 97934
Poruke: 300
*.dynamic.sbb.rs.

Sajt: www.stijak.com


+37 Profil

icon Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?06.10.2011. u 00:54 - pre 152 meseci
Sam sam otkrio grešku - ali ostaviću temu ako neki strogi početnik napravi sličnu grešku
Naime - ovo if oko koga mi nije bilo jasno evoluira već izmjenjenu vriijednost moneyNeeded - tj. ne istu onu vrijednost koja je bila kod evaluacije kod prvog if..
.

Rešavao sam neki zadačić - http://www.home.hs-karlsruhe.d...n/en/flowcontrol.html#roulette

I onda sam prvo uradio nešto slično njihovom rešenju (ovo sa moneyNeededOld promjenljivom) i onda shvatio da ako uzmem u obzir da sam do nekog kruga round već zaradio round-1 evro i da i njih mogu trošiti zajedno sa početnim ulogom - napravio sam i malo bolji račun (sa moneyNeeded promjenljivom)...

Međutim - kada sam program pokretao htio sam da malo sredim i da mi ne prijavljuje dva puta istu vrednost - kada odgovara i po starom i po novom - jer sam shvatio da svaka vrijednost koja odgovara po novom računu odgovara i po starom - pa sam ubacio jedno if na println kod starog računa u kojem kao logičku vrijednost imam negaciju nejednakosti iz novog računa - ali i dalje pomenuta linija svaki put izađe na ekran...

Code:
public class Rulet {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        long moneyNeeded = 0;
        long moneyNeededOld = 0;
        int numberRounds = 0;
        int numberRoundsOld = 0;
        for (int round=1;round<10000;round++)
        {
            long wager=1;
            while (Math.random()<0.5)
            {
                wager=2*wager;
            }
            if (wager>moneyNeeded+round-1)           /prvo if
             {
                moneyNeeded=wager;
                System.out.println("U krugu broj "+round+" je potrebno "+moneyNeeded);
                numberRounds++;
             }
            if (wager>moneyNeededOld){
                moneyNeededOld=wager;
                if (!(wager>moneyNeeded+round-1))       /ovo je negacija prvog if - pa se ipak aktivira svaki put kad i prvi if
                {
                    System.out.println("Po starom u krugu broj "+round+" je potrebno "+wager);
                }
                numberRoundsOld++;
            }
        }
        System.out.println("Potrebno je para "+moneyNeeded+", i desice se krugova "+numberRounds);
        System.out.println("Po starom potrebno je para "+moneyNeededOld+", i desice se krugova "+numberRoundsOld);
    }
}


Rezultat je (zavisi od random funkcije - pa ćete dobiti drugačije brojke)
Code:
U krugu broj 1 je potrebno 2
Po starom u krugu broj 1 je potrebno 2    /zašto se ovo aktiviralo???
Po starom u krugu broj 9 je potrebno 8
U krugu broj 11 je potrebno 1024
Po starom u krugu broj 11 je potrebno 1024    /zašto se ovo aktiviralo???
Po starom u krugu broj 2048 je potrebno 2048   
Po starom u krugu broj 6556 je potrebno 4096
Potrebno je para 1024, i desice se krugova 2
Po starom potrebno je para 4096, i desice se krugova 5
 
Odgovor na temu

sanchi
Sanja Jokic
Beograd

Član broj: 148256
Poruke: 104
*.dynamic.sbb.rs.



+8 Profil

icon Re: Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?06.10.2011. u 01:18 - pre 152 meseci
Zato sto u prvom if promenis moneyNeeded da bude == wager, tako da ti je onda drugi uslov zadovoljen: ne poredis vise iste vrednosti kao u prvom uslovu.
If people were meant to pop out of beds we would all sleep in toasters.
Google is your friend http://justfuckinggoogleit.com/
 
Odgovor na temu

Stijak
Beograd

Član broj: 97934
Poruke: 300
*.dynamic.sbb.rs.

Sajt: www.stijak.com


+37 Profil

icon Re: Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?06.10.2011. u 01:20 - pre 152 meseci
Hvala na trudu - iako sam već i sam progledao... Što je najgore - lomio sam glavu sat vremena - da bih onda odlučio da postavim ovdje - i onda poslije minut uvidim i sam grešku...
 
Odgovor na temu

[es] :: Java :: Rešeno-Početničko pitanje-zašto mi se aktivira neko if koje po logici ne bi trebalo da se aktivira?

[ Pregleda: 1613 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.