Toon posts:

[Java] Strings vergelijken ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
was even nmet een java spelletje bezig wat bedoelt is voor kinder van een jaar of 5, 6. druk op de button en er komt een kleur te voor schijn nu is het de bedoeling dat het kind de naam van de kleur in typt, dit is voor mij nog het probleem hier kan ik een antwoord aan de kleur hangen en deze laten vergelijken ?
iemand een idee
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
65
66
67
68
source :=:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;

public class wouter extends Applet implements ActionListener
{
    Button knopDrukker,knopReset;
    TextField knopText;
    Color kleur;
    int knopTeller=0,rood=0,groen=0,blauw=0;
    public void init()
    {
        setLayout(null);
        setBackground(Color.black);
        knopText = new TextField("");
        knopText.setBounds(100 ,40,200,20);
        add(knopText);
        knopText.addActionListener(this);

        knopDrukker = new Button("druk hier om te beginnen");
        knopDrukker.setBounds(100,10,200,20);
        add(knopDrukker);
        knopDrukker.addActionListener(this);

        knopReset = new Button("Herstart");
        knopReset.setBounds(170,70,50,20);
        add(knopReset );
        knopReset.addActionListener(this);
    }

    public void paint(Graphics g)
    {
        kleur = new Color(rood,groen,blauw);
        g.setColor(kleur);
        g.fillRect(100,100,200,200);

    }

    public void actionPerformed(ActionEvent e)
    {
        String invoer;
        if (e.getSource()==knopDrukker)
        {
            knopText.setText("vul hier je antwoord in");
            knopTeller++;
            knopDrukker.setLabel("antwoord controleren");
            if(knopTeller%4==1){rood=255;groen=0;blauw=0;}
            if(knopTeller%4==2){rood=0;groen=255;blauw=0;}
            if(knopTeller%4==3){rood=0;groen=0;blauw=255;}
            repaint();
        }
        if (e.getSource()==knopReset)
        {
            rood=0;groen=0;blauw=0;
            knopTeller=0;
            knopDrukker.setLabel("antwoord controleren");
            knopText.setText("vul hier je antwoord in");
            repaint();
        }
        if (e.getSource()==knopText)
        {
            invoer=knopText.getText();
        }
    }
}

[ Voor 3% gewijzigd door curry684 op 24-05-2004 11:55 . Reden: [code]-tags voor leesbaarheid... ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Je kan toch gewoon een struct maken zo iets van:

Java:
1
2
3
4
5
public struct Kleur
{
     public Color Kleur;
     public string Naam;
}


edit:

Zet je code even tussen de code-tag.

[ Voor 16% gewijzigd door pjvandesande op 24-05-2004 10:50 ]


  • nxt
  • Registratie: November 2001
  • Laatst online: 04-02 09:36

nxt

questa schreef op 24 mei 2004 @ 10:49:
Je kan toch gewoon een struct maken zo iets van:
structs zijn er niet in java,
maar je kan er natuurlijk wel een class van maken en hetzelfde bereiken

of je stopt het in een Map die is altijd wel handig voor key/value pairs

  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 13-03 18:21
strings kune je vergelijken met: s1.equals(s2) of zo equals(s1,s2)
beide leveren ze een boolean af. (s1 en s2) zijn de twee strings

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


Verwijderd

Topicstarter
oke, over die equals had ik ook gelezen ja alleen jij geeft als voor beeld s1 en s2 hoe moet ik de kleuren een naam geven die ik kan gebruiken met .equals ?

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Verwijderd schreef op 24 mei 2004 @ 11:04:
oke, over die equals had ik ook gelezen ja alleen jij geeft als voor beeld s1 en s2 hoe moet ik de kleuren een naam geven die ik kan gebruiken met .equals ?
Je kan toch ook gewoon de == opperator gebruiken?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

questa schreef op 24 mei 2004 @ 11:08:
Je kan toch ook gewoon de == opperator gebruiken?
Nee, dan test je of de beide String-parameters naar dezelfde variabelen wijzen, niet of ze dezelfde inhoud hebben. Wat ze dan uiteraard wel hebben, maar equals test op gelijkheid van de inhoud van variabelen.
Een equals(s1, s2)-methode bestaat bij mijn weten niet. Alleen een s1.equals(s2)

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Een simpele oplossing zou zijn om een globale variabele aan je class toe te voegen waarin je de kleur als string bijhoudt. Bijvoorbeeld:
Java:
1
String currentColor;


Bij het kiezen van de kleur geef je deze een stringwaarde van de kleur.
Als dan een antwoord wordt ingevuld, kun je deze twee waardes met elkaar vergelijken.
Java:
1
2
3
if ( antwoord.equals(currentColor) {
   melding = "Goed geantwoord.";
}


Let wel op dat Java case-sensitive is en dat "geel" dus niet gelijk is aan "Geel". Hier zul je zelf een constructie voor moeten bedenken.

En tenslotte is het een gewoonte in de Java community om klasse namen te beginnen met een hoofdletter, dus "Wouter" ipv "wouter".

[ Voor 14% gewijzigd door bigbeng op 24-05-2004 11:58 ]


Verwijderd

Voor dat case sensitivity heb je wel functies, toLowerCase of toUpperCase, ik dacht dat er overigens ook functies waren die dat automatisch deden, zoiets als equalsIgnoreCase.

Controleer voor de zekerheid java.sun.com de api documentatie van de string class.

edit:

boolean equalsIgnoreCase(String anotherString)
Compares this String to another String, ignoring case considerations.

[ Voor 21% gewijzigd door Verwijderd op 24-05-2004 12:09 ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

bigbeng schreef op 24 mei 2004 @ 11:54:
Let wel op dat Java case-sensitive is en dat "geel" dus niet gelijk is aan "Geel". Hier zul je zelf een constructie voor moeten bedenken.

En tenslotte is het een gewoonte in de Java community om klasse namen te beginnen met een hoofdletter, dus "Wouter" ipv "wouter".
Java kent vast wel een functie al:
Java:
1
2
s.ToUpper();
s.ToLower();
lijkt mij, dan zou je dat probleem daarmee kunnen oplossen.

  • FoxMan
  • Registratie: September 2000
  • Laatst online: 21-08-2025
Gebruik anders:

code:
1
2
3
if ( antwoord.toLowerCase().equals(currentColor.toLowerCase()) { 
   melding = "Goed geantwoord."; 
}

LinuxFox, because penguins aren't even furry


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Dominique:
Voor dat case sensitivity heb je wel functies, toLowerCase of toUpperCase, ik dacht dat er overigens ook functies waren die dat automatisch deden, zoiets als equalsIgnoreCase.
equalsIgnoreCase

edit:
oh, je was er zelf ook al achter :P

[ Voor 7% gewijzigd door drm op 24-05-2004 12:12 ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • LittleWan
  • Registratie: Februari 2003
  • Laatst online: 13-03 18:21
ACM schreef op 24 mei 2004 @ 11:14:
[...]
Een equals(s1, s2)-methode bestaat bij mijn weten niet. Alleen een s1.equals(s2)
bestaat toch wel hoor

http://www.sillevl.be - blog http://www.sillevl.be/blog - flickr http://www.flickr.com/sillevl


  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 22:11
LittleWan schreef op 24 mei 2004 @ 16:15:
[...]

bestaat toch wel hoor
ik neem dus aan dat dit een static method binnen de class String is? Ik heb m nog nooit gezien

  • Amras
  • Registratie: Januari 2003
  • Laatst online: 01-10-2025
LittleWan schreef op 24 mei 2004 @ 16:15:
[...]

bestaat toch wel hoor
Ik kan hem in de klasse String niet vinden hoor.

String in Java 1.5 API

  • 12_0_13
  • Registratie: April 2004
  • Laatst online: 12-02 13:19
http://java.sun.com/j2se/...#compare(java.lang.String, java.lang.String)

Hier zittie dus in :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

't Is natuurlijk wel zo handig dat er even bij te vermelden, want domweg de onderstaande code (die tenslotte gesuggereerd werd) invoeren en compilen werkt uiteraard niet :)
Java:
1
equals("een", "twee");
Pagina: 1