For loop en java pour trouver un objet player dans un tableau de joueurs


J'apprends java et je travaille sur des boucles maintenant. J'ai écrit ce code:

players[0] = new Player(1, "Paul", "Point Guard");
players[1] = new Player(24, "Bryant", "Shooting Guard");
players[2] = new Player (6, "James", "Small Foward");
players[3] = new Player (21, "Duncan", "Power Foward");
players[4] = new Player (12, "Howard", "Center"); 
players[5] = new Player (6, "Erving", "Small Foward");


public String name()
{   
    int number = readNumber(); // read in the number
    String s = "";
    for(Player player: players){
        // check if input number match with any number of the players
        if(player.numberMatches(number))        
            s += player.getName() + " ";
        else s = error();
    }
    return s;
}

La méthode error () renvoie simplement un " Aucun joueur n'a ce numéro" J'ai deux joueurs dans mon tableau joueurs qui ont le même numéro; quand j'appelle name () il renvoie " Aucun joueur n'a ce nom" J'ai essayé de supprimer l'instruction else et tout fonctionne bien. Pourquoi? Quelqu'un peut-il m'aider s'il vous plaît?

Author: mikey, 2013-03-25

1 answers

Parce que vous réattribuez s chaque fois que le numéro d'un joueur ne correspond pas au numéro donné.

Ceci est logiquement incorrect, et efface efficacement tous les joueurs qui ont été trouvés, chaque fois que le numéro d'un joueur ne correspond pas. Essayez quelque chose comme ça à la place.

public String name()
{   
    int number = readNumber(); // read in the number
    String s = "";
    for(Player player : players){
        // check if input number match with any number of the players
        if(player.numberMatches(number))        
            s += player.getName() + " ";
    }
    return s.equals("") ? error() : s;
}
 3
Author: ktm5124, 2013-03-25 03:20:58