Multidesk.be » Forums » Java » 2 letters vergelijken

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door BoeMan op zaterdag 18 december 2010 om 14:16:56.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
Goede middag :)

Ik moet voor school het spel boggle programmeren en ik zit met een probleem waar ik het woord dat ingevoerd is moet vergelijken met de letters op het bord.

Dit is het stuk code dat ik geschreven heb om het bord te maken en onderaan staat het stukje dat ik wil maken om de letters te vergelijken bij functie bevatWoord() :) InteliJ geeft in de if(woord.charAt(i).equals(bord[i][j])){ regel aan dat hij [j] niet kent.
Hopelijk kan iemand me helpen.

PHP
  1.  
  2. package be.kdg.Boggle;
  3.  
  4. import java.util.ArrayList;
  5. import java.util.Random;
  6.  
  7. public class Bord {
  8.     private static int kolommen;
  9.     private static int rijen;
  10.     private char[][] bord;
  11.  
  12.     public Bord()   {
  13.         this.kolommen = 4;
  14.         this.rijen = 4;
  15.         bord = new char[rijen][kolommen];
  16.     }
  17.  
  18.     public void schudBord() {
  19.     Random random = new Random();
  20.     for (int i = 0;i < rijen; i++)  {
  21.         for(int j = 0;j < kolommen; j++)    {
  22.             bord[i][j] = (char)(random.nextInt(26)+65);
  23.         }
  24.     }
  25.     // zie PP week 4
  26.     }
  27.  
  28.     @Override
  29.     public String toString() {
  30.         String result = "";
  31.         for(int i = 0; i < 4; i++)
  32.         {
  33.             for(int j = 0; j < 4; j++)
  34.             {
  35.                 result += String.format("|%c", bord[i][j]);
  36.             }
  37.             result += String.format("|\n");
  38.         }
  39.         return result;
  40.     }
  41.  
  42.     public boolean bevatWoord(String woord){
  43.         for(int i = 0; i <= woord.length(); i++){
  44.           if(woord.charAt(i).equals(bord[i][j])){
  45.     }
  46.         }
  47.     }
  48. }
  49.  


Sorry, ik wist niet welke tags ik moest gebruiken dus heb ik maar php tags gebruikt.

Mvg Gijs
^ Reactie #1 geschreven door SMG op zaterdag 18 december 2010 om 15:13:52.
SMG's avatar
Multiviteit: 12000
Moderator
Dus hij moet gewoon controleren of een woord in de lijst (dat bord) voorkomt.
CODE
  1.  
  2. import java.util.ArrayList;
  3. import java.util.Random;
  4.  
  5. public class Bord {
  6.  
  7.     private static int kolommen;
  8.     private static int rijen;
  9.     private char[][] bord;
  10.  
  11.     public Bord() {
  12.         this.kolommen = 4;
  13.         this.rijen = 4;
  14.         this.bord = new char[rijen][kolommen];
  15.     }
  16.  
  17.     public void schudBord() {
  18.         Random random = new Random();
  19.         for (int i = 0; i < rijen; i++) {
  20.             for (int j = 0; j < kolommen; j++) {
  21.                 bord[i][j] = (char) (random.nextInt(26) + 65);
  22.             }
  23.         }
  24.         // zie PP week 4
  25.     }
  26.  
  27.     public void setBord(char[][] bord) {
  28.         this.bord = bord;
  29.     }
  30.  
  31.     @Override
  32.     public String toString() {
  33.         String result = "";
  34.         for (int i = 0; i < 4; i++) {
  35.             for (int j = 0; j < 4; j++) {
  36.                 result += String.format("|%c", bord[i][j]);
  37.             }
  38.             result += String.format("|\n");
  39.         }
  40.         return result;
  41.     }
  42.  
  43.     public boolean bevatWoord(String woord) {
  44.         for (int rij = 0; rij < this.rijen; rij++) {
  45.             String bordWoord = "";
  46.             for (int kol = 0; kol < this.kolommen; kol++) {
  47.                 bordWoord += this.bord[rij][kol];
  48.             }
  49.             if (bordWoord.equals(woord)) return true;
  50.         }
  51.         return false;
  52.     }
  53.  
  54.     public static void main(String[] args) {
  55.         char[][] bord = new char[4][4];
  56.         bord[0][0] = 'b';
  57.         bord[0][1] = 'o';
  58.         bord[0][2] = 'o';
  59.         bord[0][3] = 'd';
  60.  
  61.         bord[1][0] = 'd';
  62.         bord[1][1] = 'o';
  63.         bord[1][2] = 'o';
  64.         bord[1][3] = 's';
  65.  
  66.         bord[2][0] = 'b';
  67.         bord[2][1] = 'a';
  68.         bord[2][2] = 'r';
  69.         bord[2][3] = 't';
  70.  
  71.         bord[3][0] = 'g';
  72.         bord[3][1] = 'e';
  73.         bord[3][2] = 'l';
  74.         bord[3][3] = 'd';
  75.         Bord b = new Bord();
  76.  
  77.         b.setBord(bord);
  78.         System.out.println(b.toString());
  79.  
  80.         System.out.println(b.bevatWoord("geld"));
  81.         System.out.println(b.bevatWoord("lolly"));
  82.         System.out.println(b.bevatWoord("bood"));
  83.        
  84.     }
  85. }

Met als output:
CODE
  1. run:
  2. |b|o|o|t|
  3. |d|o|o|s|
  4. |b|a|r|t|
  5. |g|e|l|d|
  6.  
  7. true
  8. false
  9. true

Wat ik doe is gewoon de rijen met letters aan elkaar vastplakken aan een string en die string ga ik dan vergelijken met het woord als argument.
^ Reactie #2 geschreven door BoeMan op zaterdag 18 december 2010 om 17:26:21.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
De functie moet kijken of alle letters van het woord op het bord staan, in deze versie maakt het niet uit als ze niet in de juiste volgorde staan. Bij latere versies moet het project uitgewerkt kunnen worden zodat alleen woorden tellen waarbij de letters een slang vormen op het bord, en dus niet meer gewoon los op het bord staan. Dus ik zou moeten kijken of de 1ste letter van het woord, in 1 van de 2 array's staat, daarna of de 2e letter in een van de array's staan,.... :) Daarna zal ik kijken of het ingegeven woord, als het op het bord staat, in mijn woordenlijst staat.

Mvg Gijs
^ Reactie #3 geschreven door SMG op zaterdag 18 december 2010 om 17:59:58.
SMG's avatar
Multiviteit: 12000
Moderator
Geef eens een voorbeeld voor ik of iemand weer zijn tijd dan gaat verspillen met iets wat hij/zij denkt dat het moet zijn ;)
^ Reactie #4 geschreven door BoeMan op zaterdag 18 december 2010 om 18:10:25.
BoeMan heeft nog geen avatar toegevoegd
Multiviteit: 154
|F|T|Z|O|
|C|M|T|Q|
|F|B|E|J|
|D|J|V|I|

Neem nu het woord MET
Deze letters staat op mijn bord verspreid. Ik moet mbv een functie kunnen controleren of de M, E en T in mijn array's staan. Die letters staan in en [j]. Als deze letters op het bord staan kijk in mijn woordenlijst (bijlage) of het woord een 'geldig' woord is en daarna kan ik punten toekennen.

Ik was aan het proberen deze functie te schrijven maar hij herkent [j] niet.

CODE
  1.  
  2. public boolean bevatWoord(String woord){
  3.         for(int i = 0; i <= woord.length(); i++){
  4.           if(woord.charAt(i).equals(bord[i][j]){
  5.     }
  6.         }
  7.     }
  8.  




Bijlage:
49cd5732c1fb37e5a215cc6f515fa979.txt
^ Reactie #5 geschreven door SMG op zaterdag 18 december 2010 om 19:01:46.
SMG's avatar
Multiviteit: 12000
Moderator
Zo dan?
CODE - bord.java
  1. import java.util.ArrayList;
  2. import java.util.Random;
  3.  
  4. public class Bord {
  5.  
  6.     private static int kolommen;
  7.     private static int rijen;
  8.     private char[][] bord;
  9.  
  10.     public Bord() {
  11.         this.kolommen = 4;
  12.         this.rijen = 4;
  13.         this.bord = new char[rijen][kolommen];
  14.     }
  15.  
  16.     public void schudBord() {
  17.         Random random = new Random();
  18.         for (int i = 0; i < rijen; i++) {
  19.             for (int j = 0; j < kolommen; j++) {
  20.                 bord[i][j] = (char) (random.nextInt(26) + 65);
  21.             }
  22.         }
  23.         // zie PP week 4
  24.     }
  25.  
  26.     public void setBord(char[][] bord) {
  27.         this.bord = bord;
  28.     }
  29.  
  30.     @Override
  31.     public String toString() {
  32.         String result = "";
  33.         for (int i = 0; i < 4; i++) {
  34.             for (int j = 0; j < 4; j++) {
  35.                 result += String.format("|%c", bord[i][j]);
  36.             }
  37.             result += String.format("|\n");
  38.         }
  39.         return result;
  40.     }
  41.  
  42.     public boolean bevatLetter(char letter){
  43.         for(int i = 0;i<this.bord.length;i++){
  44.             for(char bordLetter : this.bord[i]){
  45.                 if(letter == bordLetter) return true;
  46.             }
  47.         }
  48.         return false;
  49.     }
  50.  
  51.     public boolean bevatWoord(String woord) {
  52.         for(char letter : woord.toCharArray()){
  53.             if(!bevatLetter(letter)) return false;
  54.         }
  55.         return true;
  56.     }
  57.  
  58.     public static void main(String[] args) {
  59.         char[][] bord = new char[4][4];
  60.         bord[0][0] = 'F';
  61.         bord[0][1] = 'T';
  62.         bord[0][2] = 'Z';
  63.         bord[0][3] = 'O';
  64.  
  65.         bord[1][0] = 'C';
  66.         bord[1][1] = 'M';
  67.         bord[1][2] = 'T';
  68.         bord[1][3] = 'Q';
  69.  
  70.         bord[2][0] = 'F';
  71.         bord[2][1] = 'E';
  72.         bord[2][2] = 'E';
  73.         bord[2][3] = 'J';
  74.  
  75.         bord[3][0] = 'D';
  76.         bord[3][1] = 'J';
  77.         bord[3][2] = 'V';
  78.         bord[3][3] = 'I';
  79.         Bord b = new Bord();
  80.  
  81.         b.setBord(bord);
  82.         System.out.println(b.toString());
  83.  
  84.         System.out.println(b.bevatLetter('T'));
  85.         System.out.println(b.bevatLetter('I'));
  86.         System.out.println(b.bevatLetter('A'));
  87.  
  88.         System.out.println(b.bevatWoord("MET"));
  89.         System.out.println(b.bevatWoord("ZAG"));       
  90.     }
  91. }

CODE - output
  1. run:
  2. |F|T|Z|O|
  3. |C|M|T|Q|
  4. |F|E|E|J|
  5. |D|J|V|I|
  6.  
  7. true
  8. true
  9. false
  10. true
  11. false

bevatWoord gaat elke letter van een woord controleren of ze in een array zit. Dit doet het met de functie bevat letter.
^ Reactie #6 geschreven door SMG op maandag 27 december 2010 om 12:13:21.
SMG's avatar
Multiviteit: 12000
Moderator

Opmerking van de crew

En of meerdere berichten werden thuisgebracht in een nieuw onderwerp zodoende alles overzichtelijk te houden. Dat nieuwe onderwerp kan je hier terugvinden.
SMG
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen