Java 将玩家名称添加到Arraylist

Java 将玩家名称添加到Arraylist,java,arraylist,user-input,Java,Arraylist,User Input,我是java新手,很难为一个简单的游戏将玩家(1-4)添加到arraylist中。我的想法是,该程序通过询问用户(来自同一台计算机,非常基本)有多少人将在游戏中开始,然后输入姓名继续。完成后,将显示主菜单。我已经重写了以下几个小时,只是无法理解。我意识到playerTurn可能在这段代码中没有位置,但我觉得我已经尝试过了 我能想到的一切。请帮忙 扫描仪输入=新扫描仪(System.in); 公共整数回合;//5-30 public int playerTurn;//选择要玩的游戏数量。1-4 p

我是java新手,很难为一个简单的游戏将玩家(1-4)添加到arraylist中。我的想法是,该程序通过询问用户(来自同一台计算机,非常基本)有多少人将在游戏中开始,然后输入姓名继续。完成后,将显示主菜单。我已经重写了以下几个小时,只是无法理解。我意识到playerTurn可能在这段代码中没有位置,但我觉得我已经尝试过了 我能想到的一切。请帮忙

扫描仪输入=新扫描仪(System.in);
公共整数回合;//5-30
public int playerTurn;//选择要玩的游戏数量。1-4
public ArrayList players=new ArrayList();
公共游戏(){
System.out.println(“欢迎来到农场!请输入您的姓名,输入今天将有多少人(1-4名玩家)。完成后,请输入菜单开始”);
字符串名称=input.next();
while(true){
对于(int-playerTurn=0;playerTurn<4;playerTurn++){
newPlayer(names);//调用addplayer方法
}
}
}
public void newPlayer(字符串newPlayer){
players.add(newPlayer(newPlayer));
}
你看起来很困惑

首先,你需要了解有多少玩家将参加比赛。您可以这样做,但出于某种原因,您将其分配给
名称
,然后使用它创建一个
播放器
,这是没有意义的。然后你必须根据数字做一个循环,在每次迭代中,你需要一个名字并创建一个玩家

public static void main() {
    int numOfPlayers = getNumOfPlayers();
    Scanner reader = new Scanner(System.in);  // Reading from System.in
    System.out.println("Enter the number of players");
    int numOfPlayers = reader.nextInt();
    
    if (numOfPlayers > 4) // display error message - exit 

    for (int i = 0; i < numOfPlayers; ++i) {
        String playerName = reader.nextLine();
        players.add(new Player(playerName));
    }
    reader.close();
}
publicstaticvoidmain(){
int numOfPlayers=getNumOfPlayers();
扫描仪阅读器=新扫描仪(System.in);//从System.in读取
System.out.println(“输入玩家数量”);
int numOfPlayers=reader.nextInt();
if(numOfPlayers>4)//显示错误消息-退出
for(int i=0;i
您的类构造函数有一个无限循环(
while(true)
),因此它只会不断添加
Player
实例,直到您终止程序

public class Game {
    private Scanner input = new Scanner(System.in); // Scanner reading from System.in
    private int rounds;    // 5-30
    private int playerAmount; // Indicating how many players take part
    private ArrayList<Player> players = new ArrayList<>(); // Storing player instances

    public Game() {
        System.out.println("Welcome to The Farm! Please enter how many will be playing today (1-4 players) by entering your names. When finished please enter menu to begin");

        for(int i = 0; i < 4; i++) {
            String name = input.readLine();
            if (name.equals("menu") || players.size() >= 4) {
                break; // User entered menu or the there are already 4 players in the ArrayList -> break out of the for loop
            }
            newPlayer(name); // New player gets added if the if-condition above isn't executed
        }
        playerAmount = players.size();
    }
}
公共类游戏{
专用扫描仪输入=新扫描仪(System.in);//扫描仪从System.in读取
私有整数回合;//5-30
private int playerAmount;//表示有多少玩家参与
private ArrayList players=new ArrayList();//存储播放器实例
公共游戏(){
System.out.println(“欢迎来到农场!请输入您的姓名,输入今天将有多少人(1-4名玩家)。完成后,请输入菜单开始”);
对于(int i=0;i<4;i++){
字符串名称=input.readLine();
if(name.equals(“菜单”)| | players.size()>=4){
break;//用户输入的菜单或ArrayList中已有4名玩家->退出for循环
}
newPlayer(name);//如果没有执行上述if条件,则会添加新的播放器
}
playerAmount=players.size();
}
}
这样,当您实例化游戏类时,将提示用户输入玩家名称,除非输入等于
“menu”
或达到最大玩家数量,否则for循环将仅执行4次。
最后,ArrayList的大小决定了输入了多少名字,从而决定了有多少玩家在玩。

你的newPlayer方法在哪里?public void newPlayer(String newPlayer){players.add(new Player(newPlayer));}请将此添加到问题中的代码中。最理想的情况是,任何人都应该能够执行您的代码来重现您描述的行为。我明白了,对不起!刚刚添加的。我很困惑!我明白你的意思,我只是想弄清楚,玩家的数量是否可以由输入的名字数量决定。也许我可以在选择了多少玩家后询问他们的名字。你也可以这样做,你只需要拆分字符串。例如,如果您询问姓名,用户输入:“name1,name2,name3”,您可以拆分它(names.split(“,”),获得数组的大小,这是您的玩家数量