Pb code java pr mastermind

Fermé
liljuan - 30 mars 2008 à 18:59
 mo - 31 mars 2008 à 11:29
Bonjour,

Je vous sollicite car j'ai un probleme avec un des mes code java. Je dois programmer un mastermind. J'ai deja fait tout le code seulement il m'indique 3 erreurs lorsque j'essaie de le faire compiler. Les voici :

- Mastermind.java:76: cannot find symbol
symbol : method length()
location : class int []
if ( (tab.length()) != (LettreTapee.length()) )
^
- Mastermind.java:129: char cannot be dereferenced
if ( tab [i] == LettreTapee.charAt(i) )
^
- la troisieme erreur est la mm que la première. Je vous met également la partie du code défectueuse pr que ce soit plus facile pr vous de comprendre.

public static void comparaison(int [] tab) //tab contient le code secret
{
int x=0;
int y=0;
{
do
{
x=0;
y=0;

Saisie s = new Saisie(); //saisie
String LettreTapee = s.realiser();

//test de la saisie
for (int j=0; j<tab.length; j++)
{
if( (tab.length() ) != (LettreTapee.length()) )
{
continue; //test si la taille du code de l'utilisateur correspond a celle du code secret
}

if( SaisieNonValide(LettreTapee) )
{
continue;
}
}

//boucle qui parcourt le string et prend chaque caractere pour le transformer en chiffre et l'inserer dans le tableau

for (int i=0; i<tab.length; i++)
{
if (tab[i] == LettreTapee.charAt(i)) //Verifie s'il y a un chiffre a la bonne place
{
x++;
}
else if (EstAilleur(tab,LettreTapee.charAt(i))) //si ce n'est pas le cas, on verifie si le chiffre se trouve dans le tableau
{
y++;
}
}
}
while (x != tab.length);

System.out.println("x ="+x); //Affiche le nombre de chiffre bien places
System.out.println("y ="+y); //Affiche le nombre de chiffre presents mais mal places
}

}

//Methode pour tester si il n'y a pas deux fois le meme chiffre
public static boolean SaisieNonValide(String LettreTapee)
{
for(int i=0; i<LettreTapee.length(); i++) //boucle qui parcours le string
{
for (int j=0; j<i; j++) //boucle qui regarde les caracteres precedents
{
if (LettreTapee.charAt(i) == LettreTapee.charAt(j))
{
return true;
}
}
}
return false;
}

public static boolean EstAilleur(int [] tab, char LettreTapee)
{
for (int i=0; i<tab.length(); i++)
{
if (tab[i] == LettreTapee.charAt(i))
{
return true;
}
}
return false;
}
}


En esperant que vous m'aidiez.

Cordialement
A voir également:

1 réponse

Hello,

Je sais pas avec quoi tu codes tes programmes java, mais si tu avais un IDE du style Eclipse, tu aurais pu résoudre directement tout seul ta première erreur

if ( (tab.length()) != (LettreTapee.length()) )

Le probleme vient de length() : pour un simple tableau d'entiers, il n'y a pas de méthode length() mais un attribut length => il faut donc écrire

if ( (tab.length) != (LettreTapee.length()) )

Là ça devrait marcher.

Pour le second problème, même remarque que pour la premiere : avec Eclipse tu aurais vu ton erreur. Elle vient juste du fait que tu fais du copier coller de ton code et que malheureusement tu ne le fais pas correctement ;-)

if ( tab [i] == LettreTapee.charAt(i) )

Dans la méthode SaisieNonValide, LettreTapee était un string et tu pouvais utiliser charAt(i). Mais dans EstAilleur, c'est un char et tu n'as plus besoin d'utiliser charAt(i), tu as juste à faire

if (tab[i] == LettreTapee)

Voilà avec tout ça tu ne devrais plus avoir tes deux erreurs.
Par contre si je peux me permettre quelques conseils :
- utilise Eclipse
- je ne pas sûr que ton code fonctionnera dans l'état, surtout avec les comparaisons entre les char (de ton string) et les int (de ton tableau contenant le code secret). Testes juste cette ligne : System.out.println(1 == '1'); et tu verras que le résultat est faux.
- si c'est un projet que tu dois rendre à quelqu'un et pas un projet perso, ailleurs prend un S donc il vaut mieux écrire EstAilleurs. Si c'est un porjet perso et que tu t'en fous, libre à toi de laisser cette faute d'orthographe

Sur ce,
Bon courage
0