Hoe krijg ik een loop in deze switch?

Pagina: 1
Acties:
  • 955 views

Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 1073791

Topicstarter
Hallo allemaal,

Voor mijn HBO software developer moet ik een simpele calculator maken met een aantal verplichte dingen er in toegevoegd.

Nu heb ik redelijk wat code zelf kunnen schrijven, maar ik kom er niet uit hoe ik de switch die ik gebruikt heb opnieuw kan laten starten.

Kunnen jullie mij helpen om deze code goed te krijgen?

Zie onderstaande code(ik weet dat het veel makkelijker kan maar dat is nu eenmaal het doel van de opdracht:

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.util.Scanner;
public class Rekenmachine {

    @SuppressWarnings({ "resource", "unused" })
    public static void main(String[] args) {
            String uitleg = new String(" " + "Hierbij mogen cijfers achter de komma gebruikt worden");  
        
        String[] karakters = new String[4]; 
        karakters [0] = "Optellen";
        karakters [1] = "Aftrekken";
        karakters [2] = "Vermenigvuldigen";
        karakters [3] = "Delen";
        
        for(int index=0; index < karakters.length; index++)

        System.out.println("De volgende soorten kun je gebruiken: " + karakters[index]);
        
        Scanner berekenSoort = new Scanner (System.in);
        String berekenAls;
        System.out.print("Wat voor berekening moet er gemaakt worden?");  
        berekenAls = berekenSoort.next();
        
berekenAls = berekenAls.substring(0, 1).toUpperCase() + berekenAls.substring(1);

/*Er wordt gebruik gemaakt van een switch om tussen de verschillende soorten te kiezen.
 *  
 */

        switch(berekenAls.toString()) 
        {
        case "Optellen":
            String berekenOptel = berekenAls;
            
// Dit is de berekening voor optellen   
            
        Scanner eerste = new Scanner(System.in);
    int nummerEen, nummerTwee, antwoordEen;
    System.out.println("Nu gaan we optellen(+)");
    System.out.println("Voer eerste nummer in");
    nummerEen = eerste.nextInt();
    System.out.println("Voer tweede nummer in");
    nummerTwee = eerste.nextInt();
    antwoordEen = nummerEen + nummerTwee;
    System.out.println("Het antwoord is " + antwoordEen);
break;

// Dit is  de berekening voor aftrekken
    
        case "Aftrekken":
        String berekenAftrek = berekenAls;
        
    final   Scanner tweede = new Scanner(System.in);
    int numEen, numTwee, antwoordTwee;
    
    System.out.println("Nu gaan we aftrekken(-)");
    System.out.println("Voer eerste nummer in");
    numEen = tweede.nextInt();
    System.out.println("Voer tweede nummer in");
    numTwee = tweede.nextInt();
    antwoordTwee = numEen - numTwee;
    System.out.println("Het antwoord is " + antwoordTwee);
    break;
    
//Dit is de berekening voor vermenigvuldigen
    
        case "Vermenigvuldigen":
            String berekenVermenig = berekenAls;
            
    final   Scanner derde = new Scanner(System.in);
    Double nEen, nTwee, antwoordDrie;
    String vermenigvuldig = new String ("Nu gaan we vermenigvuldigen(*)");
    System.out.println(vermenigvuldig + uitleg);
    System.out.println("Voer eerste nummer in");
    nEen = derde.nextDouble();
    System.out.println("Voer tweede nummer in");
    nTwee = derde.nextDouble();
    antwoordDrie = nEen * nTwee;
    System.out.println("Het antwoord is " + antwoordDrie);
break;

//Dit is de berekening voor delen   
    
        case "Delen":
            String berekenDelen = berekenAls;
    
    Scanner vierde = new Scanner(System.in);
    Float een, twee, antwoordVier;
    String delen = new String ("Nu gaan we delen(/)");
    System.out.println(delen + uitleg);
    System.out.println("Voer eerste nummer in");
    een = vierde.nextFloat();
    System.out.println("Voer tweede nummer in");
    twee = vierde.nextFloat();
    antwoordVier = een / twee;
    System.out.println("Het antwoord is " + antwoordVier);
break;

        default: 
            System.out.println("Type een goede methode");
            return;
        }
    }
}

Alle reacties


Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Gooi je code eens tussen [code][/code], dat maakt het een stuk beter leesbaar.

Maar waar zit het probleem nu? Als je de switch nog een keer wilt gebruiken, dan kun je die functie toch nog een keer aanroepen?

Acties:
  • 0 Henk 'm!

Anoniem: 1073791

Topicstarter
Zal ik rekening mee houden de volgende keer!

Ik wil graag dat een gebruiker nadat hij een keuze gemaakt heeft, en een resultaat ontvangen heeft, de vraag krijgt of hij nog een berekening wil maken. Hoe ik dit moet doen weet ik niet, afgezien van het herstarten van de code in de console

Acties:
  • 0 Henk 'm!

  • eric.1
  • Registratie: Juli 2014
  • Laatst online: 22:47
Je zou heel simpel die Switch-case in een Functie kunnen gieten, dan kan je indien gewenst die functie opnieuw aanroepen.

code:
1
2
3
4
5
6
functie x (var) {
     switch(var) ...
      case 1
      case 2
}
x(...);

Acties:
  • 0 Henk 'm!

Anoniem: 1073791

Topicstarter
Kun je dat iets verder verduidelijken in de code die ik heb geschreven? Ben een absolute beginner namelijk dus weet er weinig vanaf.

Tevens is het niet de bedoeling dat ik meerdere classes gebruik, alles moet binnen deze class geschreven worden.

Acties:
  • 0 Henk 'm!

  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

Hoe ik 't zou doen (in pseudocode)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
functie inputAfhandelen( var ){
var uitkomst =  rekenMachine ();
print uitkomst;
if nog een keer {
  roep functie inputAfhandelen aan
}
}

function rekenMachine ( var ) {
  var berekeningSoort =  switchFunctie()
  bereken( berekeningSoort)
  return uitkomst
}

function switchFunction ( var ){
  switch (var ) {
case 1
  return berekeningSoortX
case 2 
  return berekeningSoortY
  ....
}


In de inputAfhandel functie duw je alle logica die je daar wilt hebben. Heb je meerdere inputs, dan roep je je rekenmachine nog een keer aan. Op die manier kun je ook een hele berg code duplication weghalen wat het geheel veel overzichtelijker maakt, en makkelijker om vaker aan te roepen.

Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 21:53
Het aanroepen van een functie binnen diezelfde functie zoals TERW_DAN voorstelt is niet aan te raden, omdat het uiteindelijk zal leiden tot een stackoverflow als de gebruiker oneindig keren wilt rekenen. Waar je naar zoekt is een lus die netzolang loopt todat de gebruiker de applicatie wilt afsluiten. Dus iets in de riching:
code:
1
2
3
while (nogEenKeer) {
    // lees keuze, switch, e.d.
}

Acties:
  • 0 Henk 'm!

Anoniem: 1073791

Topicstarter
ThomasG Dat is inderdaad precies waar ik naar zoek. Hoe zou ik dat in mijn code kunnen zetten?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Anoniem: 1073791 schreef op zaterdag 19 mei 2018 @ 19:17:
Hoe zou ik dat in mijn code kunnen zetten?
Nee, nee, nee. Je begrijpt Programming niet helemaal goed denk ik ;) We zitten hier niet om handjes vast te houden. Je kunt prima 3 seconden googlen en gewoon de eerste de beste link (joh, documentatie! heeft dat ook nog eens nut!) aanklikken en lezen maar. Kom er met de eerste link niet uit dan is de tweede, derde, vierde enz. link vast ook nog wel interessant. Wat jij nu hier vraagt is een ordinaire Kan iemand even...? en scriptrequest en die vlieger gaat hier dus niet op :>

Open gerust een nieuw topic als je er niet uit komt maar hanteer dan wel onze Quickstart bij 't openen van dat topic a.u.b.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.