[JAVA]Hulp nodig bij switch statement

Pagina: 1
Acties:
  • 32 views sinds 30-01-2008

  • NEOeo
  • Registratie: December 2003
  • Laatst online: 01-12 14:46
Ik heb een rekenmachine gemaakt in java, deze werkt zoals ik wil maar nu ik de knoppen MC, MR, MS en M+ erbij heb gezet wil het niet lukken. Het is namelijk zo dat mijn switch statement naar het 1e character kijkt...
Kan iemand mij helpen hiermee?

Het deel van de code:
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
    private class KnopHandler implements ActionListener { 
        public void actionPerformed(ActionEvent e) {
            String knop = e.getActionCommand();

            switch (knop.charAt(0)) {
                case '=':
                    schermwaarde = vak.getText();
                    getal2 = Double.parseDouble(schermwaarde);
                    vak.setText("");
                    waarde = "";
                    punt = false;
                    if (bewerking =="plus") {
                    uitkomst = getal1 + getal2;
                    }
                    if (bewerking =="min") {
                    uitkomst = getal1 - getal2;
                    }
                    if (bewerking =="delen") {
                    uitkomst = getal1 / getal2;
                    }
                    if (bewerking =="maal") {
                    uitkomst = getal1 * getal2;
                    }
                    vak.setText(""+uitkomst+"");
                    break;
                    
                case '+':
                    schermwaarde = vak.getText();
                    waarde = "";
                    getal1 = Double.parseDouble(schermwaarde);
                    bewerking = "plus";
                    punt = false;
                    break;
                    
                case '-':
                    schermwaarde = vak.getText();
                    waarde = "";
                    getal1 = Double.parseDouble(schermwaarde);
                    bewerking = "min";
                    punt = false;
                    break;
                    
                case '*':
                    schermwaarde = vak.getText();
                    waarde = "";
                    getal1 = Double.parseDouble(schermwaarde);
                    bewerking = "maal";
                    punt = false;
                    break;
                    
                case '/':
                    schermwaarde = vak.getText();
                    waarde = "";
                    getal1 = Double.parseDouble(schermwaarde);
                    bewerking = "delen";
                    punt = false;
                    break;
                    
                case '.':
                    if ((waarde !="") && (punt == false)){
                        waarde = waarde + ".";
                        vak.setText(waarde);
                        punt = true;}
                    break;
                    
                case 'MC':
                    waarde = "";
                    getal3 = 0;
                    punt = false;
                    break;
                
                case 'MR':
                    vak.setText(""+getal3+"");
                    waarde = "";
                    punt = false;
                    break;
                    
                case 'MS':
                    schermwaarde = vak.getText();
                    getal3 = Double.parseDouble(schermwaarde);
                    waarde = "";
                    punt = false;
                    break;
                    
                case 'M+':
                    schermwaarde = vak.getText();
                    getal4 = Double.parseDouble(schermwaarde);
                    getal3 = getal3 + getal4;
                    waarde = "";
                    vak.setText(""+getal3+"");
                    punt = false;
                    break;
                    
                default:
                    waarde = waarde + knop;
                    vak.setText(waarde);
                    break;
            }
        }
    }

  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:49
Je hebt een 'MC' etc.. als character, terwijl dit een string is. Een character is namelijk altijd een letter (in dit geval dus de 'M'). Wat je zou kunnen doen is een case 'M': aanmaken en onder deze een switch die de tweede letter controleerd.

Is de java compiler niet duidelijk genoeg? Want die zegt hier toch duidelijk: "Invalid character constant" op regel 66, 72, 78 en 85.

[ Voor 21% gewijzigd door Marcj op 22-02-2007 11:12 ]


  • Foutlook
  • Registratie: Februari 2001
  • Niet online
Eh, controleren in de case "M" met behulp van een if-else welke "M-knop" je te pakken hebt?

  • Wouter Tinus
  • Registratie: Oktober 1999
  • Niet online

Wouter Tinus

Whee!

Volgens mij kun je beter aparte event handlers bouwen voor al je knoppen. Dit is niet echt de geest van OO :).

Professioneel Hyves-weigeraar


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
^^Wat hij zegt

Daarnaast is het niet de bedoeling dat je hier een ("flinke") lap code post en dan van ons verwacht dat we je zo de oplossing geven of het voor je voorkauwen (zie ook scriptrequest / quickfix)
NEOeo schreef op donderdag 22 februari 2007 @ 11:06:
Het is namelijk zo dat mijn switch statement naar het 1e character kijkt...
Je weet gewoon wat het probleem is; zo inventief hoef je ook weer niet te zijn om te beseffen dat je dan ook naar het 2e karakter moet kijken. Je kunt dus, als je op deze manier door wil breien, Marcj's oplossing prima gebruiken.

[ Voor 46% gewijzigd door RobIII op 22-02-2007 11:17 ]

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


  • NEOeo
  • Registratie: December 2003
  • Laatst online: 01-12 14:46
marcj zou je mij opweg kunnen helpen?

  • Marcj
  • Registratie: November 2000
  • Laatst online: 12:49
NEOeo schreef op donderdag 22 februari 2007 @ 11:26:
marcj zou je mij opweg kunnen helpen?
Als ik jouw was zou ik eerst wat meer tutorials over Java gaan bekijken. Als je hier niet uitkomt met de hint die ik je gegeven heb, zul je toch eerst wat meer over Java moeten leren. Kijk daarnaast ook naar was Wouter zegt, dit is niet echt een nette manier van OO programmeren. Op deze manier blijven uitbreiden is lastig en gevoelig voor errors. Wat gaat er bijvoorbeeld gebeuren als je een knop met de tekst "++" gaat toevoegen?? Het is beter om aparte event handlers daarvoor aan te maken.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Sorry, maar zo werkt het hier niet.
Zoals RobIII al aangeeft, willen we echt wel helpen, maar verwachten we toch wel wat inzet van jou. Het is echt niet de bedoeling dat je anderen jouw code laat fixen, zonder dat je ook maar enige inzet toont.
Zowiezo kan je -zoals gezegd- beter met event-handlers werken; indien je toch bij je switch statement wil blijven, dan moet je eens kijken wat je checked in je switch statement (het eerste character), en waarop je test (in sommige gevallen op 2 characters, wat een string is).

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.