[JAVA] Player prompt

Pagina: 1
Acties:

  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Ik ben bezig met het maken van een simpel dart-telprogramma. Het moet de score gaan bijhouden van dartspellen. Ik heb nog niet zo veel ervaring met Java en dat merk ik meteen in het begin al :p
Ik krijg het niet goed voor elkaar om de spelers te laten invoeren. Wat ik wil is dat het programma checkt of er bij de vraag wat de naam van Speler 1 is, invoer gegeven is, zo ja, dan mag hij vragen om de naam van Speler 2 enz. Dit is de code die ik nu heb, maar hij vraagt toch om alle 4 de spelers, ook al vul ik op een gegeven moment niets meer in. Ook de error "Er is tenminste 1 speler vereist om het spel te kunnen beginnen." wil nog niet op het scherm verschijnen. Wat doe ik fout ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        String p1 = JOptionPane.showInputDialog(null, "Naam Speler 1 ?",
                                                "Darts v1.0",
                                                JOptionPane.QUESTION_MESSAGE);
        if (p1!="") {
            String p2 = JOptionPane.showInputDialog(null, "Naam Speler 2 ?",
                    "Darts v1.0",
                    JOptionPane.QUESTION_MESSAGE);

            if (p2 != "") {
                String p3 = JOptionPane.showInputDialog(null, "Naam Speler 3 ?",
                        "Darts v1.0",
                        JOptionPane.QUESTION_MESSAGE);

            if (p3 != "") {
                String p4 = JOptionPane.showInputDialog(null, "Naam Speler 4 ?",
                        "Darts v1.0", JOptionPane.QUESTION_MESSAGE);
            }
        }
    } else {
            JOptionPane.showMessageDialog(null, "Er is tenminste 1 speler vereist om het spel te kunnen beginnen.",
                                          "Darts v1.0",
                                          JOptionPane.ERROR_MESSAGE);
        }

[ Voor 7% gewijzigd door jdsm op 15-02-2006 10:00 ]


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 19:32
String vergelijkingen doe je met String.equals() niet met operatoren als !=
Op dit moment wordt dus continu je else statement uitgevoerd, omdat de if-conditie false oplevert.

[ Voor 40% gewijzigd door Kwistnix op 15-02-2006 10:05 ]


  • RayNbow
  • Registratie: Maart 2003
  • Laatst online: 15:13

RayNbow

Kirika <3

iNFERiON schreef op woensdag 15 februari 2006 @ 09:57:
Dit is de code die ik nu heb, maar hij vraagt toch om alle 4 de spelers, ook al vul ik op een gegeven moment niets meer in.
Strings vergelijken doe je in Java zo:
code:
1
string1.equals("blaat")

== en != vergelijkt of het precies twee dezelfde Objecten zijn of niet.

edit:
spuit11 :X

[ Voor 5% gewijzigd door RayNbow op 15-02-2006 10:06 ]

Ipsa Scientia Potestas Est
NNID: ShinNoNoir


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Strings vergelijk je op inhoud in Java met .equals() niet met = :)

  • jdsm
  • Registratie: Januari 2004
  • Laatst online: 07-02-2019
Ah ja, thx voor de snelle reacties, dat was idd het probleem, ik heb nu

if (!p1.equals("")) {

enz.
En dat werkt prima !

Bedankt :D

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Mijn Java is een beetje roestig, maar ik deed zelf altijd het volgende, scheelt weer een controle op null:
Java:
1
2
3
if (!"".equals(p1)) {
    /// ...
}

Als p1 dan null mocht zijn krijg je geen NullPointerException.

[ Voor 4% gewijzigd door kenneth op 15-02-2006 10:17 ]

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 19:32
kenneth schreef op woensdag 15 februari 2006 @ 10:17:
Mijn Java is een beetje roestig, maar ik deed zelf altijd het volgende, scheelt weer een controle op null:
Java:
1
2
3
if (!"".equals(p1)) {
    /// ...
}

Als p1 dan null mocht zijn krijg je geen NullPointerException.
Op zich is die stap wel handig tijdens debuggen.
Als bij jou het if-statement niet wordt uitgevoerd is dat dan omdat het String object nog niet geïnitialiseerd is of omdat het een verkeerde waarde representeerd?
Dat weet je nu niet. Die informatie kan best handig zijn.

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

bvp

FallenAngel666 schreef op woensdag 15 februari 2006 @ 10:26:
[...]


Op zich is die stap wel handig tijdens debuggen.
Als bij jou het if-statement niet wordt uitgevoerd is dat dan omdat het String object nog niet geïnitialiseerd is of omdat het een verkeerde waarde representeerd?
Dat weet je nu niet. Die informatie kan best handig zijn.
Die informatie kan idd best handig zijn maar dan moet je dus wel éérst voordat je de equals() doet, controleren of bijv. p1 != null anders knalt ie er meteen uit met een nullpointer.

edit:
Je zult bij een inputDialog trouwens ook altijd op null moeten controleren.
Als je nl. op cancel drukt is p1 dus altijd null.

Netter zou hier ook zijn om gebruik te maken van methods en deze aanroepen.
Hieronder klein vb. zal wel commentaar op komen om het nog netter te doen >:) :P
Zo kun je bijv. ook de foutmeldingen Dialog gemakkelijk altijd aanroepen met de tekst die je wilt.

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
if ( !voerIn("Naam Speler 1 ?") ) {
  geefFout("Er is tenminste 1 speler vereist om het spel te kunnen beginnen.");
}
else if ( voerIn("Naam Speler 2") ) {
  if ( voerIn("Naam Speler 3") ) {
    if ( voerIn("Naam Speler 4") ) {
    }
  }
}

    private boolean voerIn (String naam) {
        String invoer =  JOptionPane.showInputDialog(null, naam,
                "Darts v1.0", JOptionPane.QUESTION_MESSAGE);
        
        if ( invoer==null || "".equalsIgnoreCase(invoer) ) {
            return false;
        }
        else {
            //verwerk de verdere invoer van de spelers: opslaan namen dus.
            return true;
        }
    }
    
    private void geefFout(String message) {
        JOptionPane.showMessageDialog(
                null,
                message,
                "Darts v1.0", JOptionPane.ERROR_MESSAGE);
    }

[ Voor 50% gewijzigd door bvp op 15-02-2006 11:07 ]


  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
Ja die geefFout methodes ben ik zelf ook altijd fan van. Dan kan je tenminste over je app dezelfde vensters gebruiken en hoef je niet 100x de code voor je dialoog te schrijven.

Always shoot for the moon. Even if you miss you will land among the stars...


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

bvp

seamus21 schreef op woensdag 15 februari 2006 @ 11:57:
Ja die geefFout methodes ben ik zelf ook altijd fan van. Dan kan je tenminste over je app dezelfde vensters gebruiken en hoef je niet 100x de code voor je dialoog te schrijven.
Tja, is het hele idee achter OO ;)

Was zelf tevens ook niet echt eens met:
Java:
1
2
3
4
5
6
7
8
9
if ( !voerIn("Naam Speler 1 ?") ) { 
  geefFout("Er is tenminste 1 speler vereist om het spel te kunnen beginnen."); 
} 
else if ( voerIn("Naam Speler 2") ) { 
  if ( voerIn("Naam Speler 3") ) { 
    if ( voerIn("Naam Speler 4") ) { 
    } 
  } 
} 


Is dit niet op een andere manier op te lossen?

  • seamus21
  • Registratie: December 2001
  • Laatst online: 24-02-2018
bvp schreef op woensdag 15 februari 2006 @ 12:13:
[...]Tja, is het hele idee achter OO ;)
Yep :) maar het nog maar eens benadrukken hiervan leek me relevant voor de TS.

Always shoot for the moon. Even if you miss you will land among the stars...


Verwijderd

wat je met String a == String b doet, is controleren of de variabele a naar exact hetzelfde object verwijst als variabele b

(en met a.equals(b) controleer je of a equivalent is met b --> dus of hij dezelfde waardes heeft voor zijn variabelen als de ander)
Pagina: 1