Java 如何将用户输入保存为类实例的名称?

Java 如何将用户输入保存为类实例的名称?,java,class,input,Java,Class,Input,我试图使用用户输入的字符串作为类实例的名称。在本例中,我试图使用用户输入来命名类实例player1。但是,它不允许我这样做,因为当我将player1设置为players类的实例时,它已经被定义了 System.out.println("Enter your name, player1: "); Scanner input = new Scanner(System.in); //the user enters their name String player1 = input.next();

我试图使用用户输入的字符串作为类实例的名称。在本例中,我试图使用用户输入来命名类实例
player1
。但是,它不允许我这样做,因为当我将
player1
设置为
players
类的实例时,它已经被定义了

System.out.println("Enter your name, player1: ");
Scanner input = new Scanner(System.in);
//the user enters their name
String player1 = input.next();


players player1 = new players();

基本上,您要做的是选择一个有意义的变量名。就像在代数中一样,你不使用函数的输入作为变量名。但是,您确实将输入视为给定变量名的替换


您可以为
player1
选择一个更有意义的名称。如果您希望用户输入的是玩家的名字,那么作为字符串的
player1
应该重命名为
playerName
,然后
player1=新玩家()可以保留


它是非典型的,通常表示期望用户键入一些内容并定义一个变量名的设计很差。

基本上,您要做的是选择一个有意义的变量名。就像在代数中一样,你不使用函数的输入作为变量名。但是,您确实将输入视为给定变量名的替换


您可以为
player1
选择一个更有意义的名称。如果您希望用户输入的是玩家的名字,那么作为字符串的
player1
应该重命名为
playerName
,然后
player1=新玩家()可以保留


它是非典型的,通常表示期望用户键入某些内容并定义一个变量名的设计很差。

如果不指出明显的变量名,我将采用不同的方法回答

也许您希望以面向对象的方式获取一个输入并实际将其设置为
播放器的名称。显然,您有一个类
player
,那么为什么不在构造函数中加入一个
name
参数呢

public class Player {
    private String name;

    public Player(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }
}
然后,当你得到输入时,你就这样做了

String playerName = input.nextLine();
Player player1 = new Player(playerName);
现在,当您创建多个
播放器
时,每个播放器都有一个不同的
名称


您还应该遵循Java命名约定。类名以大写字母开头


更新

您需要为每个实例创建一个新的播放器

String playerName = input.nextLine();
Player player1 = new Player(playerName);

playerName = input.nextLine();
Player player2 = new Player(playerName);

playerName = input.nextLine();
Player player3 = new Player(playerName);

playerName = input.nextLine();
Player player4 = new Player(playerName);

在不指出明显的变量名的情况下,我将采用不同的方法来回答

也许您希望以面向对象的方式获取一个输入并实际将其设置为
播放器的名称。显然,您有一个类
player
,那么为什么不在构造函数中加入一个
name
参数呢

public class Player {
    private String name;

    public Player(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }
}
然后,当你得到输入时,你就这样做了

String playerName = input.nextLine();
Player player1 = new Player(playerName);
现在,当您创建多个
播放器
时,每个播放器都有一个不同的
名称


您还应该遵循Java命名约定。类名以大写字母开头


更新

您需要为每个实例创建一个新的播放器

String playerName = input.nextLine();
Player player1 = new Player(playerName);

playerName = input.nextLine();
Player player2 = new Player(playerName);

playerName = input.nextLine();
Player player3 = new Player(playerName);

playerName = input.nextLine();
Player player4 = new Player(playerName);

“如果您希望用户输入的是一个玩家的名字,那么作为字符串的玩家应该被称为playerName,然后players player1=new players();可以保留。”---是的,我喜欢这样,但是如何将“playerName”和“player1”设置为相等?“这是非典型的,通常表示期望用户键入某个内容并定义一个变量名的设计很差。”——那么,如果您希望玩家输入自己的名字(例如Mark或Andy)来替换“player1”,您会怎么做“?@user3133300我不会的!实际上,我只是将用户的输入存储在一个变量中,就像您在这里所做的那样。用户输入是字符串输入,所以它进入您的字符串。然后,变量
player1
中存储了一个
players
的实例。如果您希望它们相等,则它们需要具有相同的类型或彼此可分配。“也许如果您希望用户输入是玩家的名称,那么作为字符串的玩家应该称为playerName,然后playern1=new players();可以保留。”---是的,我喜欢这样,但如何设置“playerName”和“playern1”“彼此相等?”这是一种非典型现象,通常表示期望用户键入某个内容并定义一个变量名的设计很差。”----那么,如果您希望玩家输入自己的名称(例如Mark或Andy)以替换“player1”,您会怎么做?@user3133300我不会!实际上,我只是将用户的输入存储在一个变量中,就像您在这里所做的那样。用户输入是字符串输入,所以它进入您的字符串。然后,变量
player1
中存储了一个
players
的实例。如果你想让它们相等,它们必须是同一类型的,或者可以相互转让。我认为关于“指出明显的”的说法有点刺痛。但也许不是。不管怎样,+1表示提及命名约定。不工作是什么意思?我不明白。对于每个输入,您需要创建一个新的播放器。看到我的更新了吗?拍啊,它还是不起作用。我不知道为什么,这是有道理的,但出于某种原因,它仍然不起作用。我想我可能会做一个新的职位。但是无论如何,谢谢你的帮助;你教过我构造函数:)如果你想打印名字,你需要使用
player1.getName()