声明对象时动态参数用法

时间:2016-02-11 11:01:21

标签: java oop

我要求用户输入这样的名字和金钱价值。 我试着这样做:

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输入的自定义方法。

它应该像这样工作:

  

请输入您的姓名:

     

亚历

     

亚历克斯输入你的金额:

     

无论是什么......

我可以动态地执行此操作,还是应该传统上使用另一个for循环来请求资金?

2 个答案:

答案 0 :(得分:1)

像你一样编码,是在寻找麻烦和困难。

尝试按照以下步骤操作:

  • 询问姓名
  • 将名称放在变量
  • 要求金额
  • 将钱存入变量
  • 创建名称和变量
  • 的人员

而不是试图在一行中做所有事情。

答案 1 :(得分:1)

如果你看一下Wesley's answer,IMO就会有更多“明显的”以及实现目标的简单方法。

但是,我可能会在这里建议你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。它将为您实现动态 ...