Toon posts:

[java] loop doorbreken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedenmiddag,

ik heb een vraag over de volgende structuur:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
do
{  
   ....
  switch
 { 
      .....               // eerste case 
       do
       { 
         ....
          switch
           { 
             case x :
                      if (...)
             ....

            }
            
        } while (yyy)
     break;        // de break van die eerste case
 
     .....               // overige cases 
  }
 
}  while (xxx)

---------------------------------------------------------------

Mijn vraag heeft betrekking op de tweede switch; binnen deze tweede switch plaats ik een if(..)-else binnen een case, het gevolg van de else moet zijn dat de gehele loop opnieuw begint, het zal iets met break te maken hebben, ik weet alleen niet wat .

p.s. bekende puzzle over een moeder die een baby, een ijsje en een krab naar de overkant moet brengen zonder dat de baby wordt gebeten door de krab en zonder dat het ijsje wordt opgegeten door de baby, puzzle is makkelijk, scriptje niet zo.....jaja ik ben een newb

[ Voor 4% gewijzigd door Verwijderd op 21-04-2003 16:43 ]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
voor het gemakkelijk te houden breek je de code best op in functies... als je toch will harcode

kun je:

mylabel:for(;;) //do zal ook werken
{
//any depth
continue mylabel; //volgende ie break
}

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
break zorgt ervoor dat je uit de iteratie springt.
continue zorgt ervoor dat er verder gedaan met de volgende iteratie; ik bedoel, de loop wordt verder uitgevoerd, maar met de volgende 'i'.

code:
1
2
3
4
5
6
7
8
9
int i = 0;
while( i < 10 )
{
   i++;
   if ( i == 3 ) 
   {
         continue;
   }
}

Hier zal, bij i == 3, in de then - tak gesprongen worden, en zal alles na de if niet meer uitgevoerd worden. Er zal echter terug gesprongen worden naar het begin van de loop.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je kunt beter niet gaan werken met breaks ed omdat je programma flow dan vrij slecht te lezen is. Verder moet je oppassen met te veel structuren in elkaar. Het gebeurt mij niet vaak dat ik 2 lussen in elkaar heb. In jouw geval zijn 2 lussen + 2 switch-case statements echt te veel van het goeie.

tip) functie mag gewoonlijk niet langer zijn dan 20 a 25 regels.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Alarmnummer schreef op 21 April 2003 @ 18:56:
Je kunt beter niet gaan werken met breaks ed omdat je programma flow dan vrij slecht te lezen is.
Daar ben ik het niet mee eens. Een break is nodig in bepaalde gevallen en zorgt imho zeker niet voor verminderde leesbaarheid.

(Zie ook jouw topic daarover: [rml][ alg] breaks handig of lelijk?[/rml])
tip) functie mag gewoonlijk niet langer zijn dan 20 a 25 regels.
Ook hier wil ik ff nuanceren. Een functie splits je niet op op basis van aantal regels, maar op basis van bij elkaar horende functionaliteit.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Bedankt voor de reacties, ik wist bijv. al niks van een continue; functie |:(

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Verwijderd schreef op 22 April 2003 @ 13:07:
Bedankt voor de reacties, ik wist bijv. al niks van een continue; functie |:(
Het is ook geen functie, maar een keyword. :D

https://fgheysels.github.io/


Verwijderd

whoami schreef op 21 april 2003 @ 20:14:
[...]
Ook hier wil ik ff nuanceren. Een functie splits je niet op op basis van aantal regels, maar op basis van bij elkaar horende functionaliteit.
Dat is zo. Toch zul je merken dat heel vaak, als een functie langer wordt dan 20-25 regels, de ondersteunde functionaliteit verder op te delen is. Voor een beginnende programmeur is het daarom een goede tip om in ieder geval extra te letten op functies die groot worden, om te zien of ze niet verder op te breken zijn in subfuncties met zinvolle en atomaire functionaliteit.

Verwijderd

Topicstarter
Het is ook geen functie, maar een keyword.
O+

[ Voor 6% gewijzigd door Verwijderd op 22-04-2003 17:59 ]


  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

mylabel:for(;;) //do zal ook werken
{
//any depth
continue mylabel; //volgende ie break
}
Sorry voor de lame reply.. maar bah wat vies met dat label... :( daar is Java toch niet voor gemaakt??? ;)

[ Voor 5% gewijzigd door esf op 22-04-2003 19:06 ]

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
esf schreef op 22 April 2003 @ 19:06:
[...]
Sorry voor de lame reply.. maar bah wat vies met dat label... :( daar is Java toch niet voor gemaakt??? ;)
nee idd, maar het is wel een manier om:

code:
1
2
3
4
5
6
7
8
9
10
doh:while
{
    while
    {
         while
         {
             continue doh;
         }
    }
}


te doen - en dat is wat ie wilde - had toch ook geschreven dat ie veel beter fucnties
gebruikt voor code op te delen... Mooi ist niet, maar tis wel Java (niet dat ik persoonlijk dit in code die voor iedereen bedoelt is zetten, heb het wel in een innerloop voor een string replace functie)

  • esf
  • Registratie: Juni 2002
  • Laatst online: 11-03 14:06

esf

ja oke dat is ook wel zo. Maar het deed me een beetje denken aan het goto commando dat vooral in basic veel gebruikt wordt.

Maar ik zie ook niet zo even een nette oplossing voor het probleem dat de topicstarter heeft geschetst. Misschien een lokale variabele die bijhoudt of je al uit de loop moet springen of niet. Maar ook dat is geen programmeren van de hoogste plank. Dus misschien toch maar de veredelde goto ;)

The hardest thing in the world to understand is the income tax. - Albert Einstein


  • zerok
  • Registratie: November 2001
  • Laatst online: 18-08 18:27

zerok

geen

Dit is volgens mij het java prakticum van lucht en ruimtevaart ik had dezelfde opdracht vorige week donderdag.
We hebben nog geen functies gehad dus daarmee komt die dan ook niet verder.
Ik heb dit zelf in zo'n regel of 100 geprogrameerd kan je alleen geen voorbeeld geven omdat ik dan naar informatica toe moet gaan.

"never argue with idiots they drag you down to their level and beat you with experience" dilbert


Verwijderd

Topicstarter
Hey, ja inderdaad ;) , ik gebruik nu eental variabelen door de loop heen, dit gaat wel lukken denk ik (ik laat hem optellen met elke zet..mwahh komt wel goed hoor :) ...bedankt nog
Pagina: 1