Checken of een woord al gebruikt is

Status
Niet open voor verdere reacties.

revived

Gebruiker
Lid geworden
21 jan 2013
Berichten
13
Beste vroeg me af of iemand wist hoe je kon controleren of een ingegeven woord al reeds werd in gegeven.

Code hieronder werkt niet naar behoren.
De bedoeling is dat de gebruiker een woord ingeeft en dat de systeem nagaat of die woord al gebruikt is of niet.

alvast bedankt
HTML:
 public void verwerk(String woord)
    {
        this.woord= woord;
        gebruikteWoord.add(woord);
        slaGebruikteWoordenOp();
        checkGeldigheid();
    }


    public void slaGebruikteWoordenOp()
    {
       for(int i=0; i<gebruikteWoord.size();i++)
       {
         if( gebruikteWoord.get(i).equals(woord) )
         {
             System.out.println("Is al gebruikt ");
         }
         else System.out.println("nog niet gebruikt "); 
       }
    }
    public boolean reedsGebruikt()
    {
        return reedsGebruikt;
    }
 
Als eerste raad ik je aan om je slaGebruikteWoordenOp te hernoemen.
De functie van die methode is toch om te kijken of een woord bestaat?

Verder zou ik ¨woord¨ meegeven met die methode.
Wat je dan krijgt is het volgende:

[JS]public void slaGebruikteWoordenOp(String woord){};[/JS]

of beter

[JS]public void checkOfWoordAlIngegevenIs(String woord){}[/JS]

Bij het aanroepen van de functie doe je dan:

[JS]public void verwerk(String woord)
{
this.woord= woord;
gebruikteWoord.add(woord);
slaGebruikteWoordenOp(woord);
checkGeldigheid();
}[/JS]

Als 3de zou ik de functie aanpassen zodat deze een boolean teruggeeft (en niet de functie zelf laten printen).

[JS]public boolean slaGebruikteWoordenOp()
{
for(int i=0; i<gebruikteWoord.size();i++)
{
if( gebruikteWoord.get(i).equals(woord) )
{
return true;
}
else return false;
}
}[/JS]

Ook check je niet op hoofdletters, dat zou ik sowieso even doen.

Als ik hem even snel namaak dan krijg ik dit:

[JS]import java.util.ArrayList;
import java.util.Scanner;


public class Test {

ArrayList<String> myArrayList = new ArrayList<String>();


public void main(String[] args){

}


public void readInput(){
Scanner input = new Scanner(System.in);

for (int i = 0; i<10;i++){
String s = input.nextLine().toLowerCase();
boolean wordcheck = checkWoord(s);
if (wordcheck){
//woord staat er al in
System.out.println("Het woord is eerder ingegeven");
}
else{
// woord toevoegen
myArrayList.add(s);
}}
}
public boolean checkWoord(String woord){
boolean returnboolean = false;
for (int i = 0; i<myArrayList.size(); i++){
if(myArrayList.get(i).equals(woord)){
returnboolean = true;
}
else{}
}
return returnboolean;

}

}
[/JS]

je zou hem dan aanroepen in een mainclasse met:

[JS] public static void main(String[] args){
Test myTest = new Test();
myTest.readInput();
}[/JS]



[edit]
Als je ook bezorgd bent over geheugen gebruik kan je beter een stringbuffer gebruiken i.p.v String

Dit omdat elke keer als je String hernoemt deze een nieuwe plaats in het geheugen reserveerd en daar dan de String naar laat verwijzen, de vorige waarde van de String blijft dan rondzweven in het geheugen.

Een stringbuffer kan wel aangepast worden, en door de stringbuffer aan te passen en de String naar de Stringbuffer te laten verwijzen, maak je geen rotzooi in het geheugen.


Als dit allemaal niet duidelijk is, negeer het dan maar gewoon voor nu :)


[/edit]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan