Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java] Trouver un charactère dans un tableau....[résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Trouver un charactère dans un tableau....[résolu]

n°1068545
frenchlove​r
Posté le 02-05-2005 à 11:22:55  profilanswer
 

Salut à tous,
j'essai de faire un jeu du pendu. Donc, j'ai ma chaine de caractère correspondant au mot à trouver et j'ai mon charactère que la personne à taper.
 
J'aimerais savoir comment faire pour vérifier que le charactère se trouve (ou pas) dans le tableau.
 
J'ai vu dans la doc java la méthode compareTo(Character anotherCharacter).
 
Est-ce la méthode à utiliser ou y a-t-il mieux ?
 
Merci pour vos conseils à un newbie...


Message édité par frenchlover le 02-05-2005 à 14:37:00

---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
mood
Publicité
Posté le 02-05-2005 à 11:22:55  profilanswer
 

n°1068550
Cherrytree
cn=?
Posté le 02-05-2005 à 11:28:54  profilanswer
 

boolean contains(char c, char[] array) {
    for (int i = 0; i < array.length; i++) {
        if (c == array[i]) {
            return true;
        }
    }
    return false;
}
 
ou bien,
 
boolean contains(char c, String s) {
    return (s.indexOf(c) != -1);
}
 
ou encore autre chose.


---------------
Le site de ma maman
n°1068554
frenchlove​r
Posté le 02-05-2005 à 11:35:35  profilanswer
 

Merci pour ta réponse, mais pourrais-tu l'expliquer un peu ???
 
Est-il possible de faire :

Code :
  1. while(y<=tableauMot.length()){
  2. if (lettre.compareTo(tableauMot[y])==0){
  3.  System.out.println("Les caracteres sont egaux!" );
  4. }
  5. else{
  6.  System.out.println("Les caracteres sont differentes" );
  7. }
  8. }


Message édité par frenchlover le 02-05-2005 à 11:37:25

---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1068556
Elmoricq
Modérateur
Posté le 02-05-2005 à 11:40:23  profilanswer
 

frenchlover a écrit :

Merci pour ta réponse, mais pourrais-tu l'expliquer un peu ???
 
Est-il possible de faire :

Code :
  1. while(y<=tableauMot.length()){
  2. if (lettre.compareTo(tableauMot[y])==0){
  3.  System.out.println("Les caracteres sont egaux!" );
  4. }
  5. else{
  6.  System.out.println("Les caracteres sont differentes" );
  7. }
  8. }



 
 
C'est possible, mais à mon avis tu n'auras pas le résultat escompté : il va imprimer un message pour chaque lettre testée.
 
En plus ce sera toujours la première lettre, et ta boucle est infinie.


Message édité par Elmoricq le 02-05-2005 à 11:41:04
n°1068559
frenchlove​r
Posté le 02-05-2005 à 11:45:27  profilanswer
 

Ouais, j'ai vu ça et je viens de corriger :

Code :
  1. public static void main (String[] arg){
  2.  String mot="monsieur";
  3.  char[] tableauMot=mot.toCharArray();
  4.  int x=mot.length();
  5.  char lettre='n';
  6.  int y=0;
  7.  while(y<=x){
  8.   if (lettre.compareTo(tableauMot[y])==0){
  9.    System.out.println("Les caracteres sont egaux!" );
  10.   }
  11.   else{
  12.    System.out.println("Les caracteres sont differentes" );
  13.   }
  14.   y=y+1;
  15.  }
  16. }


 
Le fait qu'il me renvoie un message à chaque fois, c'est pas grave pour l'instant. C'est juste pour tester la méthode compareTo pour voir si ça peut marcher.
 
Seulement, là il me dis à la ligne 16 que je cite "char cannot be deferenced". Qu'est ce que cela veut dire et comment le changer ???


Message édité par frenchlover le 02-05-2005 à 11:50:44

---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1068571
Profil sup​primé
Posté le 02-05-2005 à 11:56:08  answer
 

Tu fais "lettre.[qqchose]" où lettre est de type char, c'est pas possible. Utilise l'une des méthodes qu'on t'a donné plus haut. Si tu tiens vraiment à utiliser compareTo (mais c'est idiot) : Character.toString(lettre).compareTo(tableauMot[y]) [...].

n°1068572
Cherrytree
cn=?
Posté le 02-05-2005 à 11:56:28  profilanswer
 

Tu ne peux pas utiliser de méthode sur un type primitif.
 
Ton algorithme est trop long par rapport à ton besoin. Je propose :
 

Code :
  1. String mot = "monsieur";
  2. char lettre = 'n';
  3. for (int i = 0; i < mot.length(); i++) {
  4.     if (lettre == mot.charAt(i)) {
  5.         System.out.println("Les caractères sont égaux." );
  6.     } else {
  7.         System.out.println("Les caractères sont différents." );
  8.     }
  9. }


 
Mais est-ce vraiment ce que tu veux, i.e. imprimer le résultat le chaque test.


Message édité par Cherrytree le 02-05-2005 à 11:57:36

---------------
Le site de ma maman
n°1068582
frenchlove​r
Posté le 02-05-2005 à 12:03:49  profilanswer
 

Non, le but final sera de comparer le caractère tapé par le joueur avec le tableau de caractère du mot généré par l'ordi afin de voir si le caractère est bon ou pas.
 
Là, c'était juste pour tester la méthode compareTo. Si vous dites que c'est pas une bonne solution, je n'ai aucune objection pour changer.
 
Je veux bien utiliser les méthodes de Cherrytree, mais je comprend pas trop comment elles marchent.
En gros, on teste le caractère 'c' avec le tableau [array] et on regarde si 'c' se trouve dedans et on sort si il si trouve. C'est ça ???
 
boolean contains(char c, char[] array) {  
    for (int i = 0; i < array.length; i++) {  
        if (c == array[i]) {  
            return true;  
        }  
    }  
    return false;  
}  
 
Mais si jamais le caractère y est 2 fois ??? Par exemple "cacao". Le deuxième 'c' ne sera pas identifié, exact ???


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1068589
Cherrytree
cn=?
Posté le 02-05-2005 à 12:10:34  profilanswer
 

frenchlover a écrit :


Mais si jamais le caractère y est 2 fois ??? Par exemple "cacao". Le deuxième 'c' ne sera pas identifié, exact ???


Tu as tout compris.
 
On peux modifier pour s'adapter à ce nouveau besoin.
 

Code :
  1. public int count(char c, char[] array) {
  2.     int count = 0;
  3.     for (int i = 0; i < array.length; i++) {
  4.         if (c == array[i]) {
  5.             count++;
  6.         }
  7.     }
  8.     return count;
  9. }


 
Celle-ci te retourne le nombre d'occurences de c dans array.


---------------
Le site de ma maman
n°1068597
frenchlove​r
Posté le 02-05-2005 à 12:21:15  profilanswer
 

Pourquoi est-ce qu'il me demande un ; à la ligne 5 ???

Code :
  1. class Pendu{
  2. public static void main (String[] arg){
  3.  char c='n';
  4.  char[] array="montagne".toCharArray();
  5.  boolean contains(char c,char[] array){ 
  6.      for (int i = 0; i < array.length; i++) { 
  7.           if (c == array[i]) { 
  8.               return true
  9.           } 
  10.       } 
  11.       return false;
  12.       System.out.println(contains); 
  13.      }
  14. }


 
Tiens, je vais également essayer ta 3ème solution avec le nombre d'occurence.


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
mood
Publicité
Posté le 02-05-2005 à 12:21:15  profilanswer
 

n°1068607
Profil sup​primé
Posté le 02-05-2005 à 12:30:04  answer
 

frenchlover a écrit :

Pourquoi est-ce qu'il me demande un ; à la ligne 5 ???


 
Parce que tu essaies de définir une méthode dans une autre, c'est syntaxiquement incorrect...

n°1068612
Cherrytree
cn=?
Posté le 02-05-2005 à 12:36:02  profilanswer
 

frenchlover a écrit :

Pourquoi est-ce qu'il me demande un ; à la ligne 5 ???

Code :
  1. class Pendu{
  2. public static void main (String[] arg){
  3.  char c='n';
  4.  char[] array="montagne".toCharArray();
  5.  boolean contains(char c,char[] array){ 
  6.      for (int i = 0; i < array.length; i++) { 
  7.           if (c == array[i]) { 
  8.               return true
  9.           } 
  10.       } 
  11.       return false;
  12.       System.out.println(contains); 
  13.      }
  14. }


 
Tiens, je vais également essayer ta 3ème solution avec le nombre d'occurence.


Ta syntaxe est mauvaise. La déclaration de la méthode contains est mal construite. Je propose :
 

Code :
  1. public class Pendu {
  2.     public static void main(String[] args) {
  3.         char lettre = 'n';
  4.         char mot = "montagne".toCharArray();
  5.         if (contains(lettre, mot)) {
  6.             System.out.println("Lettre trouvée." );
  7.         } else {
  8.             System.out.println("Lettre non trouvée." );
  9.         }
  10.     }
  11.     public static boolean contains(char c, char[] array) {
  12.         for (int i = 0; i < array.length; i++) { 
  13.             if (c == array[i]) { 
  14.                 return true
  15.             } 
  16.         } 
  17.         return false;
  18.     } 
  19. }


 
Il va te falloir creuser plus profondément le langage, car manifestement tu es encore trop léger.


---------------
Le site de ma maman
n°1068613
frenchlove​r
Posté le 02-05-2005 à 12:36:20  profilanswer
 

Oui, je viens de m'en rendre compte en testant l'autre méthode. Mille excuses pour mon incapacité... Snif, mais j'essai de m'améliorer...
 
Je pense que cela devrait mieux marcher comme ça :

Code :
  1. class Pendu{
  2. public static boolean contains(char c,char[] array){ 
  3.      for (int i = 0; i < array.length; i++) { 
  4.           if (c == array[i]) { 
  5.               return true
  6.           } 
  7.       } 
  8.       return false;
  9.      }
  10. public static void main (String[] arg){
  11.  char c='n';
  12.  char[] array="montagne".toCharArray();
  13.  contains(c,array);
  14. }


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1068617
frenchlove​r
Posté le 02-05-2005 à 12:37:13  profilanswer
 

Ah, ben zut grillé par cherrytree...  :)


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°1068621
frenchlove​r
Posté le 02-05-2005 à 12:40:13  profilanswer
 

En tout cas, merci beaucoup pour vos précieux conseils.
 
Je me permet humblement de préciser que je ne fais du java que depuis 4 ou 5 tp en classe et que je cherche à allez un peu plus vite que de simple "retourner les nombres pairs dans l'intervalle..."
 
Effectivement, je dois bosser ma syntaxe... Mais, bon la faim m'a déconcentrer  :D  
 
 
Je pense que je devrais pouvoir continuer mon programme maintenant.
 
Encore une fois, merci.


---------------
Ce n'est pas parce que c'est difficile que nous n'osons pas, c'est parce que nous n'osons pas que c'est difficile
n°2226194
antoniorak​otoarison
Posté le 25-04-2014 à 09:39:13  profilanswer
 

est-ce que quelqu'un peut m'aider sur mon code java, je veux parcourir un tableau qu'un utilisateur a entré et puis l'interroger après 3 saisie un  
nombre , et le programme indique si ce dernier est inclus dans le tableau,  :??:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java] Trouver un charactère dans un tableau....[résolu]

 

Sujets relatifs
[VB]Array sur tableau de structuresConfigurer PHP pour phpMySQL [Résolu]
[JAVA]Obtenir un sous arbre[JAVA] modifier le fond d un jpanel
[Résolu] Correction Feuille de Style CSS Firefox > IEeffet surbrillance sur un tableau ???
[resolu] ie - probleme avec l'ascenseur vertical[CSS] hauteur automatique de <div> imbriquées [resolu]
[Résolu] Session, mysql, class, PEARexécuter un fichier java sans jbuilder
Plus de sujets relatifs à : [Java] Trouver un charactère dans un tableau....[résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR