Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,从字符串数组的索引中命名类实例的问题_Java_Arrays_Class - Fatal编程技术网

在java中,从字符串数组的索引中命名类实例的问题

在java中,从字符串数组的索引中命名类实例的问题,java,arrays,class,Java,Arrays,Class,这是我的密码: List<Player> l = new List<Player>(); String[] playerNumber = {"Red", "Green", "Blue", "Yellow" ,"Orange", "Black", "Purple"}; for(int i = 0; i < numberOfPlayers; i++){ Player playerNumber[i] = new Player();

这是我的密码:

List<Player> l = new List<Player>();
String[] playerNumber = {"Red", "Green", "Blue", "Yellow" ,"Orange",
    "Black", "Purple"};
for(int i = 0; i < numberOfPlayers; i++){
        Player playerNumber[i] = new Player();
        System.out.println(numberOfPlayers);
        System.out.println(playerNumber[i]);
        l.add(playerNumber[i]);
}
List l=新列表();
字符串[]playerNumber={“红色”、“绿色”、“蓝色”、“黄色”、“橙色”,
“黑色”、“紫色”};
for(int i=0;i
在第5行,我在eclipse中遇到以下错误:

- Duplicate local variable playerNumber
- Debug Current Instruction Pointer
- Type mismatch: cannot convert from Player to Player[]
- Syntax error on token "i", delete this token
- The method add(Player) in the type List<Player> is not applicable for the arguments 
 (String)
-重复本地变量playerNumber
-调试当前指令指针
-类型不匹配:无法从一个玩家转换到另一个玩家[]
-令牌“i”上的语法错误,删除此令牌
-类型列表中的add(Player)方法不适用于参数
(字符串)
如果我不能这样命名,我怎么能成功地以不同的方式命名呢

提前感谢=)

你到底想在这里完成什么
playerNumber
是字符串数组,而不是播放器。你能用英语说你想做什么吗?我们将帮助您将其翻译成Java

编辑: 这里有两种方法可以“命名”你的球员。首先,您可以使用地图将姓名与玩家关联:

Map<String, Player> players = new HashMap<String, Player>();
players.put("Red", new Player());
Player red = players.get("Red");
我不清楚你想如何使用这些名字,所以我不能说一个比另一个好。但是,在上面的例子中,最好使用构造函数来指定名称,如@Peter Lawrey的答案所示

你到底想在这里完成什么
playerNumber
是字符串数组,而不是播放器。你能用英语说你想做什么吗?我们将帮助您将其翻译成Java

编辑: 这里有两种方法可以“命名”你的球员。首先,您可以使用地图将姓名与玩家关联:

Map<String, Player> players = new HashMap<String, Player>();
players.put("Red", new Player());
Player red = players.get("Red");

我不清楚你想如何使用这些名字,所以我不能说一个比另一个好。但是,在上面的例子中,最好使用构造函数来指定名称,如@Peter Lawrey的答案所示。

另一种编写方法可能是

public class Start {
    private static final List<String> playerColours = Arrays.asList(
        "Red,Green,Blue,Yellow,Orange,Black,Purple".split(","));

    private final List<Player> playerlist = new ArrayList<Player>();

    public Start(int numberOfPlayers) {
        for(String playerColour: playerColors.subList(0, numberOfPlayers))
            playerlist.add(new Player(playerColour));
    }
}
如果与相同

List<String> subList = playerColors.subList(0, numberOfPlayers);
for(String playerColour: subList)
类似于

Player player = new Player();
player.setName(playerColour);
playerlist.add(player);

但是,它使用构造函数构造具有名称的播放器。使用构造器的好处是,你可以说没有名字就不能创建一个球员(使用二传者你不能这么说),你也可以把名字定为final,以明确它不能更改。

另一种写这个的方法可能是

public class Start {
    private static final List<String> playerColours = Arrays.asList(
        "Red,Green,Blue,Yellow,Orange,Black,Purple".split(","));

    private final List<Player> playerlist = new ArrayList<Player>();

    public Start(int numberOfPlayers) {
        for(String playerColour: playerColors.subList(0, numberOfPlayers))
            playerlist.add(new Player(playerColour));
    }
}
如果与相同

List<String> subList = playerColors.subList(0, numberOfPlayers);
for(String playerColour: subList)
类似于

Player player = new Player();
player.setName(playerColour);
playerlist.add(player);

但是,它使用构造函数构造具有名称的播放器。使用构造器的好处是,你可以说没有名字就不能创建一个球员(使用二传者你不能这么说),你也可以把名字定为final,以明确它不能更改。

这样做可以吗?:

List<Player> players = new List<Player>(); 
String[] playerColors = {"Red", "Green", "Blue", "Yellow" ,"Orange", "Black", "Purple"}; 
for(int i = 0; i < playerColors.length; i++){
         Player player = new Player();
         player.color = playerColors[i];
         players.add(player);
} 
List players=newlist();
字符串[]playerColor={“红色”、“绿色”、“蓝色”、“黄色”、“橙色”、“黑色”、“紫色”};
for(int i=0;i
您喜欢这项工作吗

List<Player> players = new List<Player>(); 
String[] playerColors = {"Red", "Green", "Blue", "Yellow" ,"Orange", "Black", "Purple"}; 
for(int i = 0; i < playerColors.length; i++){
         Player player = new Player();
         player.color = playerColors[i];
         players.add(player);
} 
List players=newlist();
字符串[]playerColor={“红色”、“绿色”、“蓝色”、“黄色”、“橙色”、“黑色”、“紫色”};
for(int i=0;i
这只是一个小片段。为什么不在这里包含它,这样我们就不必留下问题了?那么你想创建一个玩家数组,每个玩家都有自己的颜色?@shade,我只需要一种方法来识别每个实例。不需要是一个颜色下面有一些很好的答案,但只是为了澄清任何困惑,在你的代码中,你希望能够通过名字或数字来引用每个玩家吗?例如Player currentPlayer=“蓝色”;或类似于播放器currentPlayer=1;(虽然这两种方法都不管用,但我正试图更好地了解你实际上在做什么。)这只是一个小片段。为什么不在这里包含它,这样我们就不必留下问题了?那么你想创建一个玩家数组,每个玩家都有自己的颜色?@shade,我只需要一种方法来识别每个实例。不需要是一个颜色下面有一些很好的答案,但只是为了澄清任何困惑,在你的代码中,你希望能够通过名字或数字来引用每个玩家吗?例如Player currentPlayer=“蓝色”;或类似于播放器currentPlayer=1;(虽然这两种方法都不管用,但我正试图更好地了解你到底在做什么。)我试图给第一个玩家命名为红色,第二个玩家命名为绿色,等等……但我认为没有成功……我试图给第一个玩家命名为红色,第二个玩家命名为绿色,等等……但我认为没有成功……@bzupnick,您最初至少有两行代码。;)你猜这几行代码在干什么?我不理解整件事。我也不明白整个8/9行。@bzupnick,我已经分解了这些行的功能。如果你愿意,我很乐意详细解释。你只需要想一想,然后问一下。@bzupnick,至少有两行代码原本是你的。;)你猜这几行代码在干什么?我不理解整件事。我也不明白整个8/9行。@bzupnick,我已经分解了这些行的功能。如果你愿意,我很乐意详细解释。你只需要想一想,然后问问。
List<Player> players = new List<Player>(); 
String[] playerColors = {"Red", "Green", "Blue", "Yellow" ,"Orange", "Black", "Purple"}; 
for(int i = 0; i < playerColors.length; i++){
         Player player = new Player();
         player.color = playerColors[i];
         players.add(player);
}