[JAVA] Beginnersfout

Pagina: 1
Acties:

  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Ik zie duidelijk iets over het hoofd, aangezien JBuilder een klein rood kringeltje geeft op een plaats waar het totaal niet logisch is in mijn opzicht. Ik ben nog niet zo lang met Java bezig en heb dus ook even gaan idee waar het fout gaat. Ik ben bezig met het schrijven van een programma dat scores bijhoudt tijdens een dartspel. Dit is mijn code tot nu toe, inclusief comments om uit te leggen waar de stukjes code voor bedoeld zijn:

Java:
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
import javax.swing.JOptionPane;

public class counter {
    public static void main(String[] args) {
            // Define program version
            String ver = "1.0";
            
            // Show welcome message
            JOptionPane.showMessageDialog(null, "Welkom bij Darts !",
                                          "Darts v" + ver + "",
                                          JOptionPane.INFORMATION_MESSAGE);
    
    class player {
            // Ask for player names
            player p1 = JOptionPane.showInputDialog(null, "Naam Speler 1:",
                                                    "Darts v" + ver + "",
                                                    JOptionPane.QUESTION_MESSAGE);
            player p2 = JOptionPane.showInputDialog(null, "Naam Speler 2:",
                                                    "Darts v" + ver + "",
                                                    JOptionPane.QUESTION_MESSAGE);
            player p3 = JOptionPane.showInputDialog(null, "Naam Speler 3:",
                                                    "Darts v" + ver + "",
                                                    JOptionPane.QUESTION_MESSAGE);
            player p4 = JOptionPane.showInputDialog(null, "Naam Speler 4:",
                                                    "Darts v" + ver + "",
                                                    JOptionPane.QUESTION_MESSAGE);
    }
    
    class score {
            // Announce throw
            JOptionPane.showMessageDialog(null, "Het is " + player.p1 + "'s beurt !",
                                          "Darts v" + ver + "",
                                          JOptionPane.INFORMATION_MESSAGE);
        }
    }
}


Bij het laatste stukje code staat een rood kringeltje onder het haakje van de regel:

Java:
1
JOptionPane.showMessageDialog(null, "Het is " + player.p1 + "'s beurt !",


Volgens JBuilder is de fout "<identifier> expected".
Wie kan mij uitleggen waar ik de fout in ga ?

Alvast bedankt :)

[ Voor 15% gewijzigd door jdsm op 15-02-2006 23:21 ]


Verwijderd

Nu heb ik nog nooit naar Java gekeken, maar het lijkt me dat player.pl niet gedeclareerd is.

Edit, hmm laat ik voortaan maar gewoon andere mensen antwoorden als ik het niet zeker weet. :P

[ Voor 35% gewijzigd door Verwijderd op 15-02-2006 23:25 ]


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
ik denk dat je door _zelf_ te debuggen precies kan uitvinden waar je de fout in gaat.

we zouden het kunnen zeggen, maar debuggen is het belangrijkste van programeren, en dat moet je gewoon kunnen.
klinkt hard maar geloof me, je wilt het zelf kunnen ;)

This message was sent on 100% recyclable electrons.


  • Mavvie
  • Registratie: Maart 2001
  • Laatst online: 10-05-2021
ik denk dat het te maken heeft met die ' voor "'s beurt" zet daar eens een \ voor

Twitter | Linkedin


  • Tutti-frutti
  • Registratie: Oktober 2001
  • Niet online

Tutti-frutti

Graag gedaan!

Is het niet die ' ?

/spuit11

[ Voor 35% gewijzigd door Tutti-frutti op 15-02-2006 23:24 ]

4015Wp west (Dordrecht)


  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Dank voor de snelle reacties, maar nee zonder de ' geeft hij dezelfde error.

  • The Wrecker
  • Registratie: Juli 2002
  • Laatst online: 03-04 23:29

The Wrecker

Networking Rulez

Doe null eens in hoofd letters

Ofwel NULL
of plaats er eens een 0

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Wat dacht je van een missende accolade bij je 'main' en een accolade te veel bij 'score'?

[ Voor 33% gewijzigd door Gertjan op 15-02-2006 23:31 ]


  • Donderwolk
  • Registratie: Januari 2002
  • Laatst online: 14-01 21:59
Misschien wil je ook wat dingen binnen functies of constructors zetten... (8>

Zoiets, maar dan met nog wat meer functionaliteit. Er gebeurt nu vrij weinig...

Java:
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
import javax.swing.*;

public class Darts extends JFrame{
    public static String version = "1.0";
    private Player[] players = new Player[4];

    public Darts(){
        super("Darts");
        setSize(640,480);
        setVisible(true);
        // Show welcome message
        JOptionPane.showMessageDialog(this, "Welkom bij Darts !",
                                          "Darts v" + version + "",
                                          JOptionPane.INFORMATION_MESSAGE);
    }

    public void startGame(){
        getPlayerNames();
    }

    private void getPlayerNames(){
        for( int i=0; i<players.length; i++ ){
            String name = JOptionPane.showInputDialog("Insert name for player " + (i+1));
            players[i] = new Player( name );
        }
    }

     private class Player{
        private String name;        

        public Player( String name ){
            this.name = name;
        }

        public String getName(){
            return name;
        }
    }

    public static void main( String[] args ){
        Darts darts = new Darts();
        darts.startGame();
    }
}

[ Voor 89% gewijzigd door Donderwolk op 15-02-2006 23:49 ]

Pwnd


  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Gertjan schreef op woensdag 15 februari 2006 @ 23:30:
Wat dacht je van een missende accolade bij je 'main' en een accolade te veel bij 'score'?
Daar dacht ik van dat dat niet zo was, puur naar de accolades gekeken is de code als volgt:

Java:
1
2
3
4
5
6
7
8
public class counter { // open counter class
    public static void main(String[] args) { // open main
    class player { // open player
    } // sluit player
    class score { // open score
        } // sluit score
    } // sluit main
} // sluit counter class


Klopt precies dus.

  • Daos
  • Registratie: Oktober 2004
  • Niet online
iNFERiON schreef op woensdag 15 februari 2006 @ 23:20:
Ik zie duidelijk iets over het hoofd, aangezien JBuilder een klein rood kringeltje geeft op een plaats waar het totaal niet logisch is in mijn opzicht. Ik ben nog niet zo lang met Java bezig en heb dus ook even gaan idee waar het fout gaat. Ik ben bezig met het schrijven van een programma dat scores bijhoudt tijdens een dartspel. Dit is mijn code tot nu toe, inclusief comments om uit te leggen waar de stukjes code voor bedoeld zijn:

Java:
13
14
15
16
17
18
19
20
    class player {
            // Ask for player names
            player p1 = JOptionPane.showInputDialog(null, "Naam Speler 1:",
                                                    "Darts v" + ver + "",
                                                    JOptionPane.QUESTION_MESSAGE);
            //...
    }
 }
- Je maakt in je main nog een klasse aan (wat volgens mij niet mag). Blijkt wel te mogen.
- showInputDialog geeft String terug en geen player.

[ Voor 11% gewijzigd door Daos op 15-02-2006 23:39 ]


  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 07-02 20:23

Gertjan

mmmm, beer...

Daos schreef op woensdag 15 februari 2006 @ 23:35:
- Je maakt in je main nog een klasse aan (wat volgens mij niet mag).
Hm, heb het net ff getest, en het lijkt wel te mogen. Heb inmiddels een tijdje geen java gedaan, dus het is een beetje verroest :). Bij dezen mijn excuses voor mijn vorige post, die kennelijk niet klopt :)

  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Daos schreef op woensdag 15 februari 2006 @ 23:35:
- Je maakt in je main nog een klasse aan (wat volgens mij niet mag).
- showInputDialog geeft String terug en geen player.
2e heb ik verholpen, dat moesten inderdaad strings worden.
1e mag geloof ik wel maar ik denk dat ik het verkeerd aanpak.

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Kijk ook eens naar je class player. Sowieso moet je je aan styles houden, een classname begint met een Hoofdletter. En hoe weet je compiler wat de naam van je player is? player is nl geen String, volgens mij. Zeg dan:
Java:
1
2
3
 String p1 = JOptionPane.showInputDialog(null, "Naam Speler 1:",
                                               "Darts v" + ver + "",
                                               JOptionPane.QUESTION_MESSAGE); 


Ik denk trouwens dat de fout zich voordoet omdat je in je class score een messageDialog wilt laten zien, maar dat doe je buiten een methode. Zet hem eens in een void ofzo en roep die dan aan.
vb:
Java:
1
2
3
4
5
6
7
class Score{
     public void announceThrow(){
          OptionPane.showMessageDialog(null, "Het is " + player.p1 + "'s beurt !",
                                          "Darts v" + ver + "",
                                          JOptionPane.INFORMATION_MESSAGE); 
     }
}

edit:

oh, Daos was me ook al voor met die String...

[ Voor 9% gewijzigd door coenbijlsma op 15-02-2006 23:41 ]


  • RedFox
  • Registratie: November 2001
  • Laatst online: 01:26

RedFox

Heb je een OV ofzo?

iNFERiON schreef op woensdag 15 februari 2006 @ 23:35:
[...]


Daar dacht ik van dat dat niet zo was, puur naar de accolades gekeken is de code als volgt:

Java:
1
2
3
4
5
6
7
8
public class counter { // open counter class
    public static void main(String[] args) { // open main
    class player { // open player
    } // sluit player
    class score { // open score
        } // sluit score
    } // sluit main
} // sluit counter class


Klopt precies dus.
Klopt precies? volgens mij moet je main toch echt sluiten vóór 'class player' ipv pas aan het eind.

You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else.


  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
RedFox schreef op woensdag 15 februari 2006 @ 23:42:
[...]


Klopt precies? volgens mij moet je main toch echt sluiten vóór 'class player' ipv pas aan het eind.
Nee hoor, je mag dat gewoon doen. Kijk maar naar de link van Daos.

Verwijderd

wat dacht je van die ' escapen? :)

  • The Wrecker
  • Registratie: Juli 2002
  • Laatst online: 03-04 23:29

The Wrecker

Networking Rulez

RedFox schreef op woensdag 15 februari 2006 @ 23:42:
[...]

Klopt precies? volgens mij moet je main toch echt sluiten vóór 'class player' ipv pas aan het eind.
Je mag inner classes hebben binnen java.
ik weet niet of dat die classes aangemaakt mogen worden in een methode, maar daar zeurt die compiler toch niet over?

Het leek mij dat ie zeurde over die NULL, maar ja ik weet het verder anders ook niet.

  • RedFox
  • Registratie: November 2001
  • Laatst online: 01:26

RedFox

Heb je een OV ofzo?

The_Wrecker schreef op woensdag 15 februari 2006 @ 23:48:
[...]


Je mag inner classes hebben binnen java.
ik weet niet of dat die classes aangemaakt mogen worden in een methode, maar daar zeurt die compiler toch niet over?

Het leek mij dat ie zeurde over die NULL, maar ja ik weet het verder anders ook niet.
Klopt, mijn fout, nooit geweten dat dat mocht.

You are not special. You are not a beautiful or unique snowflake. You're the same decaying organic matter as everything else.


  • Daos
  • Registratie: Oktober 2004
  • Niet online
RedFox schreef op woensdag 15 februari 2006 @ 23:49:
[...]


Klopt, mijn fout, nooit geweten dat dat mocht.
Ik wist het ook niet (net als vele anderen). Het lijkt mij niet iets wat een beginner goed kan gebruiken.

Het moet zoiets worden:
Donderwolk schreef op woensdag 15 februari 2006 @ 23:32:
Misschien wil je ook wat dingen binnen functies of constructors zetten... (8>

Zoiets, maar dan met nog wat meer functionaliteit. Er gebeurt nu vrij weinig...

Java:
1
// wat code
Misschien helpt het als de topicstarter er een boek bij pakt.

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 06-12-2025
The_Wrecker schreef op woensdag 15 februari 2006 @ 23:48:
[...]

Het leek mij dat ie zeurde over die NULL, maar ja ik weet het verder anders ook niet.
Als ik het me goed herinner is er geen NULL in java, enkel null.

[ Voor 6% gewijzigd door Tjoekbezoer op 16-02-2006 03:16 ]


  • Gonadan
  • Registratie: Februari 2004
  • Laatst online: 20:13

Gonadan

Admin Beeld & Geluid, Harde Waren
Tjoekbezoer schreef op donderdag 16 februari 2006 @ 03:15:
[...]


Als ik het me goed herinner is er geen NULL in java, enkel null.
Dat is correct. Alleen null bestaat in java. En die wordt goed gebruikt.

Eclipse gaat al over z'n nek door de inner classes in de main |:(

Look for the signal in your life, not the noise.

Canon R6 | RF 24-70 f/2.8 L | 50 f/1.8 STM | 430EX II
Sigma 85 f/1.4 Art | 100-400 Contemporary
Zeiss Distagon 21 f/2.8


  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 20-01 17:28

mr_obb

Lakse Perfectionist

Het probleem zit hem niet in de syntax, die ziet er allemaal wel werkend uit (mooi is het niet, maar ja.). Het probleem is dat je het concept van object georienteerd programmeren nog niet door hebt. Je maakt allerlei klassen aan, waar je volgens mij functies bedoelt en functies zelf ben je helemaal vergeten. Donderwolk geeft al een goede aanzet, maar ik zou als ik jou was eens een cursus java gaan doorwerken.

  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Ja, ik begin het ook te denken ja. De meeste talen leer ik wel door gewoonweg te proberen, maar Java lijkt op geen andere taal die ik al ooit eerder heb gedaan, het is allemaal wat langdradiger. Heb thuis wel een mooi boek van een paar honderd pagina's liggen, zal daar toch eens doorheen moeten gaan vanaf hoofdstuk 1 :p

Toch bedankt voor jullie reacties, het is me in ieder geval wel wat duidelijker geworden waar ik op moet letten.

  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 10-04 17:52
Gonadan schreef op donderdag 16 februari 2006 @ 08:23:
[...]
Eclipse gaat al over z'n nek door de inner classes in de main |:(
Wellicht dat dit komt omdat een main static is, oftewel de main is geen onderdeel van objecten van de klassen waar de main in staat. Het aanmaken van innerklassen is dus ook compleet niet logisch.

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


Verwijderd

Het probleem zit hem wel degelijk in de syntax!

En natuurlijk in het design. Ik heb de syntax fouten even snel opgelost.

Java:
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
public class counter {
    public static void main(String[] args) {
        // Define program version
        final String ver = "1.0";
        
        // Show welcome message
        JOptionPane.showMessageDialog(null, "Welkom bij Darts !",
                "Darts v" + ver + "",
                JOptionPane.INFORMATION_MESSAGE);
        
        class player {
            // Ask for player names
            String p1 = JOptionPane.showInputDialog(null, "Naam Speler 1:",
                    "Darts v" + ver + "",
                    JOptionPane.QUESTION_MESSAGE);
            String p2 = JOptionPane.showInputDialog(null, "Naam Speler 2:",
                    "Darts v" + ver + "",
                    JOptionPane.QUESTION_MESSAGE);
            String p3 = JOptionPane.showInputDialog(null, "Naam Speler 3:",
                    "Darts v" + ver + "",
                    JOptionPane.QUESTION_MESSAGE);
            String p4 = JOptionPane.showInputDialog(null, "Naam Speler 4:",
                    "Darts v" + ver + "",
                    JOptionPane.QUESTION_MESSAGE);
        }
        
        final player p = new player();
        
        class score {
            // Announce throw           
            score () {
                JOptionPane.showMessageDialog(null, "Het is " + p.p1 + "'s beurt !",
                    "Darts v" + ver + "",
                    JOptionPane.INFORMATION_MESSAGE);
            }           
        }
    }
}

  • sig69
  • Registratie: Mei 2002
  • Nu online
offtopic:
absoluut niet om lullig te doen, maar is het niemand opgevallen dit versie 1.0 is? :)

Maar goed, zoals al gezegd lijkt het me handig om eerst een paar uurtjes in een boek te duiken. Zoals het nu in elkaar zit kan het eventueel wel werken, maar echt netjes is het niet.

Roomba E5 te koop


  • bvp
  • Registratie: Maart 2005
  • Laatst online: 09-04 15:45

bvp

Ik denk dat je, zoals al eerder aangegeven, maar es moet gaan kijken naar de opzet van Donderwolk.
Deze is bijv. ook heel gemakkelijk aan te passen aan je vorige topic.

bijv.

Java:
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
import javax.swing.*; 

public class Darts extends JFrame{ 
    public static String version = "1.0"; 
    private Player[] players; 

    public Darts(){ 
        super("Darts"); 
        setSize(640,480); 
        setVisible(true); 
        // Show welcome message 
        JOptionPane.showMessageDialog(this, "Welkom bij Darts !", 
                                          "Darts v" + version + "", 
                                          JOptionPane.INFORMATION_MESSAGE); 
    } 

    public void startGame(){ 
        getNbrOfPlayers();
        getPlayerNames(); 
    } 
    
    private void getNbrOfPlayers() {
        String total = JOptionPane.showInputDialog("Insert number of players.");
        
        if( Character.isDigit( total.charAt(0) ) ) { 
            int tot = Integer.parseInt(total);
            players = new Player[tot]; 
        }
        else {
            displayError("Please enter only digits.");
            getNbrOfPlayers();
        }
    }
    
    private void displayError(String message) {
        JOptionPane.showMessageDialog(null, message,
                "Darts v" + version,
                JOptionPane.ERROR_MESSAGE);
    }

    private void getPlayerNames(){ 
        for( int i=0; i<players.length; i++ ){ 
            String name = JOptionPane.showInputDialog("Insert name for player " + (i+1)); 
            players[i] = new Player( name ); 
        } 
    } 

     private class Player{ 
        private String name;         

        public Player( String name ){ 
            this.name = name; 
        } 

        public String getName(){ 
            return name; 
        } 
    } 

    public static void main( String[] args ){ 
        Darts darts = new Darts(); 
        darts.startGame(); 
    } 
}
Pagina: 1