Programmeren in Java/Conditionele blokken: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
Label: bewerking met nieuwe wikitekstmodus
Bdijkstra (overleg | bijdragen)
taal, andere foutjes, een detail erbij
Regel 3:
 
== If ==
De eenvoudigste vorm van een conditionele blok is dehet ''if'' -statement diedat een booleaanse uitdrukking bevat gevolgd door een codeblok diedat moet worden uitgevoerd als de booleaanse expressie waar is.
<syntaxhighlight lang="Java">
if (<booleaanse uitdrukking>) {
// De code die moet worden uitgevoerd als de uitdrukking Truetrue heeft als resultaat.
}
</syntaxhighlight>
Regel 30:
 
== Else ==
Nu je een ''if'' hebt gebruikt om code uit te voeren als er aan een voorwaarde is voldaan, wiltwil je misschien ook code uitvoeren als het tegenovergestelde waar is.
<syntaxhighlight lang="Java">
public class Main {
Regel 45:
}
</syntaxhighlight>
Dit zal dus zeggen dat een persoon meerderjarig is als die ouder is dan 18 of minderjarig als die jonger is dan 18. Dit is echter inefficientinefficiënt, want nu hebben we twee booleaanse uitdrukkingen gebruikt die moet worden berekentberekend door Java op twee aparte ''if'' statements terwijl we al bij de eerste ''if'' statement wisten dat een persoon meerderjarig was of niet.
 
Hier komt de ''else'' van pas en ziet er als volgt uit.
<syntaxhighlight lang="Java">
if (<booleaanse uitdrukking>) {
// De code die moet worden uitgevoerd als de uitdrukking Truetrue heeft als resultaat.
} else {
// De code die moet worden uitgevoerd als de uitdrukking van de if Falsefalse heeft als resultaat.
}
</syntaxhighlight>
Regel 84:
int number = scanner.nextInt();
 
if (number % 2 == 0) {
 
if (number%2 == 0) {
System.out.println("Het getal is even");
} else {
Regel 103 ⟶ 102:
// De code die moet worden uitgevoerd als de uitdrukking true heeft als resultaat en de uitdrukking van de vorige if ''false'' heeft als resultaat
} else {
// De code die moet worden uitgevoerd als de uitdrukking van de if Falsefalse heeft als resultaat.
}
</syntaxhighlight>
Regel 127 ⟶ 126:
De persoon is meerderjarig.
</pre>
We hadden nochtans de variablevariabele ''age'' 65 als waarde gegeven, dus verwachten we dat op het scherm "De persoon is een vijftigplusser." wordt getoond. Het resultaat is echter correct. netNet zoals ''else'' wordt de ''else if'' enkel uitgevoerd als de booleaanse uitdrukking van de eerste ''if'' false geeft als resultaat. Want 65 is effectief groter of gelijk aan 18. Je moet dus de "strengste" (of sterkste) booleaanse uitdrukking altijd bovenaan plaatsen.
 
<syntaxhighlight lang="Java" highlight=5-8>
Regel 148 ⟶ 147:
De persoon is een vijftigplusser.
</pre>
Als je nu 25 zou geven als waarde aan ''age'', krijg je "De persoon is meerderjarig." te zien. Geef je een waarde onder 18, wordt de else-clausule uitgevoerd en krijg je ""De persoon is minderjarig." te zien.
 
Je kun zoveel ''else if'' gebruiken als je wilt, je zou dit ook nog kunnen uitbreiden met zestigplusser. Onthoud wel dat de strengste booleaanse uitdrukking bovenaan moet staan.
Regel 183 ⟶ 182:
}
</syntaxhighlight>
Als je geen codeblok (met accolades) gebruikt, wordt enkel de regel die rechtstreeks na de ''if'' al dan niet uitgevoerd afhankelijk of booleaanse uitdrukking waar is of niet. Als je een regel toevoegt
 
<syntaxhighlight lang="Java" highlight="7">
Regel 207 ⟶ 206:
</pre>
 
Het is echter af te raden om dit effectief zo te doen, het verminderdvermindert de leesbaarheid en kan leiden tot fouten als je bijvoorbeeld een lijnregel wilt toevoegen die afhankelijk is aan de ''if'', maar vergeet de accolades toe te voegen om dehet codeblok aan te geven .
 
== Switch ==
Regel 217 ⟶ 216:
public static void main(String[] args) {
int dayOfTheWeek = 4;
if (dayOfTheWeek == 1) {
System.out.println("Het is maandag.");
} else if (dayOfTheWeek == 2) {
System.out.println("Het is maandagdinsdag.");
} else if (dayOfTheWeek == 3) {
System.out.println("Het is maandagwoensdag.");
} else if (dayOfTheWeek == 4) {
System.out.println("Het is maandagdonderdag.");
} else if (dayOfTheWeek == 5) {
System.out.println("Het is maandagvrijdag.");
} else if (dayOfTheWeek == 6) {
System.out.println("Het is zaterdag.");
Regel 237 ⟶ 236:
}
</syntaxhighlight>
Het probleem hiermee is dat je dus iedere keer dezelfde vergelijkingvariabele doetgebruikt, een ''switch'' kan dan goed alternatief zijn en ziet er als volgt uit.
 
<syntaxhighlight lang="Java">
Regel 245 ⟶ 244:
break;
case y:
// code om uit te voeren als expressie xy heeft als resultaat
break;
case z:
// code om uit te voeren als expressie xz heeft als resultaat
break;
//enzoverder..
Regel 294 ⟶ 293:
 
=== break ===
Zoals je in vorig voorbeeld kunt zien, wordt er gebruik gemaakt van het sleutelwoord ''break''. In tegenstelling tot ''if'' wordt standaard niet alleen de code uitgevoerd datdie bij de case hoort, maar ook al de code die er achter komt. Volgend voorbeeld maakt dit duidelijk.
 
<syntaxhighlight lang="Java">
Regel 300 ⟶ 299:
 
public static void main(String[] args) {
int number = 3;
switch (number) {
case 5:
Regel 322 ⟶ 321:
1
</pre>
Dit zorgt er dus voor dat sinds ''number'' de waarde drie heeft de ''case'' met waarde drie wordt uitgevoerd en alle cases daarachter. ''break'' zorgt er dan voor dat je programma uit de ''switch'' gaat. Je bent niet verplicht om ''break'' te gebruiken of als je het gebruikt bij iedere case te gebruiken. De ''cases'' zijn in feite punten waarnaar gesprongen kan worden.
 
=== default ===
''defaultDefault'' is een soort van ''case'' maar dan zonder waarde. De code vanna de ''default'' wordt uitgevoerd als de waarde die meegegeven wordt aan de ''switch'' niet voorkomt tussen de ''cases''. Neem nu het vorige voorbeeld van het tonen van de dagen aan de hand van een ''int''. Er zijn maar zeven dagen in de week, dus als je een getal geeft die niet tussen één en zeven, zou je een soort fout meldingfoutmelding moeten krijgen. Dit kun je dan doen met ''default''.
 
<syntaxhighlight lang="Java">
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.