Types incompatibles: La carte ne peut pas être convertie en java.lang.Chaîne
Je continue à obtenir cette erreur avec mon code. Je n'arrive pas à trouver le problème.
Je ne sais pas quoi faire parce que j'ai même regardé dans le livre de texte et cela me donne une méthode similaire sauf avec des variables différentes.
Je suis sur BlueJ.
public int findFirstOfPlayer(String searchString)
{
int index = 0;
boolean searching = true;
while(index < cards.size() && searching) {
String cardname = cards.get(index); // Error highlights index
if(cardname.contains(searchString)) {
searching = false;
}
else {
index++;
}
if(searching) {
return -1;
}
else {
return index;
}
}
}
2 answers
Voici le problème, et si vous utilisiez quelque chose comme Eclipse ou Idea, cela le mettrait même en évidence pour vous.
String cardname = cards.get(index);
Évidemment, cards n'est pas compatible avec String, vous ne pouvez pas simplement l'assigner de cette façon, car votre carte de collection n'est probablement pas de type String aka ArrayList<String> cards
Vous pouvez faire soit:
String cardname = cards.get(index).toString();
Ou
String cardname = String.valueOf(cards.get(index));
Étant donné que Card est une classe à elle seule, vous ne pouvez pas la comparer à string. Vous devez soit implémenter une méthode qui renvoie une chaîne avec laquelle vous pouvez comparer searchString
, soit utiliser une variable dans l'objet card pour la comparaison.
Quelque chose comme ceci:
String cardname = cards.get(index).toString();
Ou
String cardname = cards.get(index).name