1

私はJavaを学んでいて、現在ループに取り組んでいます。私はこのコードを書きました:

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;
}

error()メソッドは、「この番号のプレーヤーはありません」を返します。配列プレーヤーに同じ番号のプレーヤーが2人います。name()を呼び出すと、「このnameErvingを持っているプレーヤーはありません」と返されます。elseステートメントを削除しようとしましたが、すべて正常に機能します。なんで?誰か助けてくれませんか?

4

1 に答える 1

3

sプレイヤーの番号が指定された番号と一致しないたびに再割り当てするためです。

これは論理的に正しくなく、プレーヤーの番号が一致しないたびに、見つかったすべてのプレーヤーを効果的に消去します。代わりにこのようなものを試してください。

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;
}
于 2013-03-25T03:20:58.700 に答える