我要求用户输入这样的名字和金钱价值。 我试着这样做:
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循环来请求资金?
答案 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。它将为您实现动态 ...