Počítání metody – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Počítání metody – Java – Fórum – Programujte.comPočítání metody – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
lekejs0
Newbie
13. 10. 2013   #1
-
0
-

Zdravím vás všechno...

Potřeboval bych poradit jak mohu přičítat a odečítat podle toho kolikrát se ta metoda použije...

Já jsme to udělal takhle

 
int corner = 0;
void step(){
move();
corner = corner + 1;
}

Bohužel se mi to nefunguje..

A potřeboval bych a by nejdřív přičítal a potom odečítal a jak mile se dostane zpátky do nuly tak celí program skončí...

Děkuji moc za každou radu, jak bych si s tím mohl poradit...

Nahlásit jako SPAM
IP: 88.102.153.–
Kit+15
Guru
13. 10. 2013   #2
-
0
-

#1 lekejs
Tohle by fungovat mělo. Asi jsi zapomněl uvést tu část, která nefunguje.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
13. 10. 2013   #3
-
0
-

na co tam ma ten corner? nikam nepredavas, jen inicializujes pred tim nez se definitivne zahodi tak prictes...

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
13. 10. 2013   #4
-
0
-

#3 KIIV
Myslel jsem si, že to má uvnitř třídy, kterou nám tady neukázal.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
lekejs0
Newbie
13. 10. 2013   #5
-
0
-

mě zajímá jak potom vypadá algoritmus proto aby se mi to zase odečítalo jak mile sčítáni splní podmínku.. Jak udělat aby se to odečítalo a v okamžiku, kdy skončí podmínka pro sčítaní... A aby se s pomocí toho odečítání vrátil zpět do corner = 0...

já jsem to udělal pomocí while a mám tam podmínku, že jakmile program udělá dostatek kroků, tak se za se změní podmínka, že se musí vrátit na zpět a tam se ukončit...

Nahlásit jako SPAM
IP: 88.102.153.–
lekejs0
Newbie
13. 10. 2013   #6
-
0
-

#3 KIIV
ten corner to je můj název, který jsem tam použil... co myslíš tím zahodí??

Nahlásit jako SPAM
IP: 88.102.153.–
Kit+15
Guru
13. 10. 2013   #7
-
0
-

#6 lekejs
Že ta proměnná po opuštění bloku přestane existovat. Pokud není v objektu, který tady nemáš uveden.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
13. 10. 2013   #8
-
0
-

#7 Kit
i kdyby byla v i v objektu, tak pokud tam bude mit presne tudle posloupnost prikazu za sebou, tak tu objektovou prekreje lokalni verzi

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Flowy0
Věrný člen
13. 10. 2013   #9
-
0
-

#8 KIIV
vysvetli to pls ... deklarovana premenna je mimo metody a v metode neni deklarovana dalsia cize sa vola ta vonkajsia ... ak nezanikne objekt ktory obsahuje metodu a zaroven premennu tak preco by mala zaniknut premenna?

Nahlásit jako SPAM
IP: 178.41.173.–
https://github.com/Flowy
Kit+15
Guru
13. 10. 2013   #10
-
0
-

#8 KIIV
Podívej se pořádně. Deklaraci a definici "corner" má mimo metodu step(). To znamená, že je provedena pouze jednou před spuštěním konstruktoru.

Kód však není kompletní, chyba může být ještě jinde.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
13. 10. 2013   #11
-
0
-

ale kdyz budes mit jen:

step() {
  if (corner) ... 
}

metodaX() {
  int corner = 0;
  step();
  ++corner;
}


tak to nemuze prece v zivote fungovat.. step ji nesmi videt z principu (co kdyby to pak zavolal od nekud jinud.. treba z jine metody Y, ktera to nedefinuje?)

ale nemusime se o tom hadat.. dokud tu nebude presnejsi kod, tak je to jako vesteni z logru na dne salku kafe... popis "nefunguje" a kus ocividne blbyho kodu nestaci

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
sleepy
~ Anonymní uživatel
422 příspěvků
14. 10. 2013   #12
-
0
-

Neviem o co sa snazis, cize mozno lepsi popis veci ktoru robis by sa hodil, nechcelo sa mi citat vsetky prispvky, ale zjavne to stale nefunguje. Tu je spon nejaky napad:

private int corner = 0;
private int next = 1;
void step() {
	move();
	if(conditionStisfied())
		next = -1;
	corner += next;
}


pripadne to pripocitovanie a odcitavanie mozes urobit priamo v tom if-e:

if(conditionSatisfied()) {
	corner--;
} else {
	corner++;
}
Nahlásit jako SPAM
IP: 147.175.177.–
lekejs0
Newbie
14. 10. 2013   #13
-
0
-

Omlouvá se vám, že tady chodím okolo horké kaše...

int corner = 0;
    
    void step(){
        move();
        corner = corner + 1;
      }
    void back(){
        move();
        corner = corner - 1;
    }
    
    
    boolean wallOnRight(){
    turnLeft();
        turnLeft();
        turnLeft();
    if (!isInFrontOfWall()){
        turnLeft();
        return true;
    }
    else {
        turnLeft();
        return false;
    }
}
    boolean wallOnLeft(){
        turnLeft();
        if(!isInFrontOfWall()){
        turnLeft();
        turnLeft();
        turnLeft();
        return true;
        
        }else{
            turnLeft();
            turnLeft();
            turnLeft();
            
            return false;
        }
    }
    
    void followWallLeft(){
        if(isInFrontOfWall()){
        turnLeft();
        turnLeft();
        turnLeft();
        }else{
            back();
            turnLeft();
            if(isInFrontOfWall()){
                turnLeft();
                turnLeft();
                turnLeft();
            }else{
                back();
                turnLeft();
                if(isInFrontOfWall()){
                    turnLeft();
                    turnLeft();
                    turnLeft();
                }else{
                    back();
                }
            }
        }
    }
    
    void followWallRight(){
     
    if (isInFrontOfWall()) {
       turnLeft();
        }
    else {
       step();
       turnLeft();
           turnLeft();
           turnLeft();
           if (isInFrontOfWall()) {
        
                turnLeft();
           }
           else {
            step();
        turnLeft();
                turnLeft();
                turnLeft();
                if (isInFrontOfWall()) {
         
          turnLeft();
               }  
        else {
              
                  step();
                }
          }
        }
}
    
    

    
    @Override
    public void execute() {
        int numberOfSteps = 1;
        
        for (int i = 0; i < numberOfSteps; i++) {

        while(!isOnBeeper()){
          wallOnRight();
          followWallRight();

        while(isOnBeeper()){
                wallOnLeft();
                pickBeeper();
              followWallLeft();
        }
             }
           
            }
        turnOff();
        }
    }

já potřebuji aby while(!isOnBeeper) přičítal a while(isOnBeeper) odečítal a jak mile se dostane do nuly tak se program zastaví a vypne...

Nahlásit jako SPAM
IP: 88.102.153.–
Kit+15
Guru
14. 10. 2013   #14
-
0
-

#13 lekejs
To všechno máš v jedné třídě? Jak se v tom můžeš vyznat?

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #15
-
0
-

#13 lekejs
no budes to muset zaprve poradne poodsazovat... pak mozna i uvidis tu chybu ....

Nahlásit jako SPAM
IP: 62.216.147.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lekejs
~ Anonymní uživatel
37 příspěvků
14. 10. 2013   #16
-
0
-

Jo tohle vse mam v jedne tride...

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 46.135.116.–
Kit+15
Guru
14. 10. 2013   #17
-
0
-

#15 KIIV
No jo, nechal jsem si editorem přerovnat odsazení a hned jsem tu chybu uviděl. Snad na to přijde i lekejs.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
lekejs
~ Anonymní uživatel
37 příspěvků
14. 10. 2013   #18
-
0
-

Jak bych to mohl udelat a bych na ni prisel??

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 46.135.116.–
Kit+15
Guru
14. 10. 2013   #19
-
0
-

#18 lekejs
Nechej si editorem automaticky odsadit zdrojový kód. Dělám to u svých programů poměrně často. Chyby ve struktuře jsou pak vidět pouhým pohledem.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #20
-
+1
-
Zajímavé
Kit +

#18 lekejs
no rika se tomu odsazovani .. znamena to ze kazda uroven zanoreni je odsazena o vicero znaku (a stejna uroven stale o stejny pocet) je to jedna z naprosto zakladnich veci v kazdym coding-standardu (prevazne je to o formatovani kodu)

napriklad srovnej svuj kod:

    boolean wallOnRight(){
    turnLeft();
        turnLeft();
        turnLeft();
    if (!isInFrontOfWall()){
        turnLeft();
        return true;
    }
    else {
        turnLeft();
        return false;
    }
}


se spravne odsazenym kodem:

    boolean wallOnRight() {
        turnLeft();
        turnLeft();
        turnLeft();
        if (!isInFrontOfWall()){
            turnLeft();
            return true;
        } else {
            turnLeft();
            return false;
        }
    }


vdzy pak vis co k sobe patri

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #21
-
0
-

mimochodem, kdyz sem se ted podival na ten kod, co sem menil odsazeni, tak by to asi bylo spravne i takto: 

    boolean wallOnRight() {
        // otocil se jako korouhvicka o 360stupnu a je zase ve stejnem smeru
        return !isInFrontOfWall();
    }
Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lekejs
~ Anonymní uživatel
37 příspěvků
14. 10. 2013   #22
-
0
-

Kde bych tu chybu mel hledat?? Ja uz do toho ziram nekolikatej den a uz my z toho hrabe...

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 46.135.116.–
Kit+15
Guru
14. 10. 2013   #23
-
0
-

#21 KIIV
Nebylo.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+15
Guru
14. 10. 2013   #24
-
0
-

#22 lekejs
Když správně odsadíš, tak to uvidíš na první pohled. Nesmíš to však udělat ručně, ale musí to udělat editor automaticky.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #25
-
0
-

#23 Kit
proc ne?  ma tam 4x turnLeft(); to je jako zustan jak si.. (pokud teda turn left nedela jeste nejake akce, o kterych nemame tuseni - ale to uz je zase "bad practice")

#22 lekejs
doporucuju dobre poodsazovat ty while cykly - pak to tam musi byt videt i pro slepyho

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+15
Guru
14. 10. 2013   #26
-
0
-

#25 KIIV
Bohužel je tam hromada těch "bad practice". Vypadá to jako implementace robota Karla, který se dívá, zda je před ním stěna, zda je stěna vpravo nebo vlevo. Během toho se musí otočit, ale pak musí stát v původním směru.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #27
-
0
-

no to je jedno, tendle kod, jak se zda, jde absolutne mimo moje chapani ... odevzdat mi to nekdo v praci na review, tak ho asi umlatim klavesnici a pak to udelam sam :D

Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lekejs0
Newbie
14. 10. 2013   #28
-
0
-

tak vám děkuji za pomoc, na něco jsme přišel..

Nahlásit jako SPAM
IP: 88.102.153.–
KIIV
~ Moderátor
+43
God of flame
14. 10. 2013   #29
-
0
-

 #28 lekejs
tak doufam ze je to tady:

        for (int i = 0; i < numberOfSteps; i++) {
            while(!isOnBeeper()) {
                wallOnRight();
                followWallRight();

                while(isOnBeeper()){
                    wallOnLeft();
                    pickBeeper();
                    followWallLeft();
                }
            }
        }
Nahlásit jako SPAM
IP: 213.220.241.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lekejs
~ Anonymní uživatel
37 příspěvků
14. 10. 2013   #30
-
0
-

Presne tak mam tam podminku a v ni dalsi podminku...

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 46.135.116.–
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, 3 hosté

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ý