有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

声明对象时动态使用java参数

我要求用户像这样输入姓名和他的货币价值。 我试着在飞行中这样做:

for (int i = 0; i < numOfPlayers; i++) {
    players.add(new Player(JOptionPane.showInputDialog("Please enter your name: "), getIntInput(players.get(i).name + " enter your amount of money: ")));
}

getIntInput是获取int输入的自定义方法

它应该是这样工作的:

Please enter your name:

Alex

Alex enter your amount of money:

Whatever int...

我可以在飞行中这样做,还是传统上我应该使用另一个for循环来要钱


共 (2) 个答案

  1. # 1 楼答案

    像你这样编码,是在自找麻烦和困难

    请尝试执行以下步骤:

    • 询问姓名
    • 将名称放入变量中
    • 要钱
    • 把钱放在可变货币里
    • 使用名称和变量创建Person

    而不是试图在一行中完成所有事情

  2. # 2 楼答案

    如果你看一下Wesley's answer,在我看来,这是实现你的目标的更“明显”和简单的方法

    不过,我可以向你推荐这里的Builder pattern

    for (int i = 0; i < numOfPlayers; i++) {
        players.add( PlayerBuilder.init().askName().askMoney().create() );
    }
    
    public final class PlayerBuilder {
        private String name = "-No name-";
        private int money = 0;
    
        private PlayerBuilder() {
        }
    
        public static PlayerBuilder init() {
            return new PlayerBuilder();
        }
    
        public PlayerBuilder askName() {
             this.name = JOptionPane.showInputDialog("Please enter your name: ");
             return this;
        }
    
        public PlayerBuilder askMoney() {
             this.money = getIntInput(this.name + " enter your amount of money: ");
             return this;
        }
    
        public Player create() {
             return new Player(name, money);
        }
    
        private int getIntInput(String msg) {
            // ...
        }
    }
    

    如果您想节省编写PlayerBuilder类的时间,可以将脏作业转移到Lombok。它将在飞行中为你做这件事