Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Pavel Kletečka:31. července 18:51

Dobrý den,

mám asi 20 if v sobě a při spuštění mi systém hlasí že je něco špatně, přičemž tam není žádná chyba.

Zkusil jsem: Zkoušel jsem obejít více if tím, že některé z nich dám do metody a systém pak bude brát mou vyvolanou metodu jako kratší, ale nefunguje to i tak.

Chci docílit: Chci mít v sobě 20 if, protože potřebuju pro svou metodu aby daný prvek splňoval spoustu aspektů (a přes or a and v if to vyřešit nejde)

 
Odpovědět 31. července 18:51
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Pavel Kletečka
Petr Čech:31. července 19:33

To, že máš 20 if by nemělo nijak vadit. Pravděpodobně se ti tam něco nějak cyklí nebo se volá rekurze.
Obecně se dá říct, že stack roste pokud se zavolá vnořená metoda - každé volání si musí na stacku uložit alespoň pár bytů + alokovat místo pro lokální proměnné.
Vzhledem k tomu, že se systém tváří tak, že máš k dispozici gigabajty na 32-bit a terabajty na 64-bit OS, prakticky nikdy stack nemůžeš naplnit, pokud se neděje něco hodně špatně - třeba nekonečná rekurze.
Také se můžeš podívat na dokumentaci té výjimky .

Zkusil jsem: Zkoušel jsem obejít více if tím, že některé z nich dám do metody a systém pak bude brát mou vyvolanou metodu jako kratší, ale nefunguje to i tak.

Díky důvodům výše uvedeným to stack overflow akorát zhorší.

TL;DR máš tam nekonečnou rekurzi

Nahoru Odpovědět  +1 31. července 19:33
the cake is a lie
Avatar
Luboš Satik Běhounek
Autoredaktor
Avatar
Odpovídá na Petr Čech
Luboš Satik Běhounek:31. července 20:25

Stack ma vetsinou defaultne jen 1MB, ty GB/TB a vic jsou na heapu.

Nahoru Odpovědět  +2 31. července 20:25
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Petr Čech
Pavel Kletečka:1. srpna 10:13

Děkuji je to možné, protože jsem to kontroloval v noci a asi jsem se přehlídl. Už to funguje děkuju.

 
Nahoru Odpovědět 1. srpna 10:13
Avatar
Odpovídá na Pavel Kletečka
Jan Procházka:3. srpna 13:36

Co to máš za 20 vnořených ifů, že to nejde zpracovat boolovou algebrou na jednodušší strukturu? To tam máš 220 možností? O_o?

 
Nahoru Odpovědět 3. srpna 13:36
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.