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

Résolu
Ananaseu Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
Ananaseu Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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?

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
Merci tu m'as beaucoup aidé. J'ai utilisé if(message.equalsIgnoreCase("A1"))
et ça fonctionne parfaitement.
0