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;
        }
    }
}
Author: Unheilig, 2015-10-30

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));
 2
Author: Iliiaz Akhmedov, 2015-10-30 23:49:18

É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
 1
Author: Andres de Lago, 2015-10-30 23:51:41