Bataille navale: je dis A1, trace un carré en A1, je dis A2...

Résolu/Fermé
Ananaseu Messages postés 3 Date d'inscription vendredi 24 avril 2015 Statut Membre Dernière intervention 14 mai 2015 - Modifié par KX le 25/04/2015 à 12:46
Ananaseu Messages postés 3 Date d'inscription vendredi 24 avril 2015 Statut Membre Dernière intervention 14 mai 2015 - 25 avril 2015 à 17:34
Bonjour!
J'ai une bataille naval à faire pour la fin de l'année en java's cool (java en plus "simple"), mais je bloque sur une partie de mon programme.
J'aimerais qu'en fonction de ce que l'on rentre dans une fenêtre par exemple: A1 ,que cela trace un carré dans la case de coordonnée qui lui correspondent dans ce cas si (0,0) ...
mon code ressemble à ceci pour cette partie du programme:

void actionsCases(){
String message = readString();   
message.compareToIgnoreCase("A1"); 
dessincarre(0,0); // dessincarre est une fonction que j'ai créé qui trace un carré en fonction de x et de y //
}



ça fonctionne, enfin en quelque sorte... car quelque soit ce que je rentre dans la fenêtre cela me trace un carré en (0,0) même si c'est "fjeghjish" que j'ai rentré...
Bien sûre j'ai fais le code pour A2 A3 A4...J10. Mais cela me fait dans tous les cas des carrés partout sans respecter :
message.compareToIgnoreCase("");

j'ai essayé de le faire avec des if mais sans succès:
Mon code:
void actionsCases(){
String message = readString();
if(message.compareToIgnoreCase("A1")){
dessincarre(0,0);
}
if(message.compareToIgnoreCase("A2")){
dessincarre(0,1);
}
...}


Le message de la console:
Erreur de syntaxe ligne 110 :
  error: incompatible types: int cannot be converted to boolean
if(message.compareToIgnoreCase("A1")){
                              ^


puis j'ai essayé de convertir les chaînes en int... Là je ne savais pas trop comment procéder... je pense avoir fait n'importe quoi

void carree (){ 
String message = readString();
message.compareToIgnoreCase("A1");
String A1 = "1";
int i;
i = Integer.parseInt(A1); 
dessincarre(0,0);
String A2 = readString();
A2.compareToIgnoreCase("A2");
A2 = "2";
i = Integer.parseInt(A2); 
dessincarre(0,1);
}


Et ça ne donne rien de concluant, ça m'ouvre une fenêtre pour chaque case et cela trace un carré pour chaque case... Je suis un peu perdue, je n'ai plus d'idée ...
Avez vous une solution à me proposer?
A voir également:

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
25 avril 2015 à 12:52
Bonjour,

Il faut regarder la documentation :
https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#compareToIgnoreCase(java.lang.String)

La méthode compareToIgnoreCase renvoie un int comme résultat.
C'est pour ça que tu ne peux pas faire
if(message.compareToIgnoreCase("A1"))
car dans un if il faut mettre un booléen alors que tu lui donnes un int.

Si tu veux comparer l'égalité il faut faire
if(message.compareToIgnoreCase("A1")==0)
, mais dans ce cas il aurait mieux valu utiliser un
if(message.equalsIgnoreCase("A1"))
...

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equalsIgnoreCase(java.lang.String)
2
Ananaseu Messages postés 3 Date d'inscription vendredi 24 avril 2015 Statut Membre Dernière intervention 14 mai 2015
25 avril 2015 à 17:34
Merci tu m'as beaucoup aidé. J'ai utilisé if(message.equalsIgnoreCase("A1"))
et ça fonctionne parfaitement.
0