2016-02-11 27 views
0

我在要求用户输入这样的名称和他的货币值。 我试图做到这一点就这样飞:声明对象时动态地使用参数

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输入。

它应该是这样的:

请输入您的姓名:

亚历

亚历输入您的金额:

无论INT ...

我可以在飞行中做到这一点,或者我应该传统盟友用另一个循环来要钱?

+0

国际海事组织,“在飞”不清楚。你能否重新表达你的问题? – Stephan

+0

@Stephan基本上我需要使用我为第一个参数声明的球员名称,并将其传递给getIntInput(另一个Joptionpane要求资金的方法) – Beckham

+0

@Stephan JOptionPane.showInputDialog(“请输入您的姓名:”) ,getIntInput(这里是用户输入的第一个参数+“输入你的金额:”) – Beckham

回答

1

像你一样的编码,正在寻求麻烦和困难。

尝试按照下列步骤操作:

  • 问名
  • 变量
  • 将name向的金额
  • 把钱放在可变
  • 用名和变量创建人

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

+0

我知道,但我想知道也许有一种选择。学习新东西总是很好的。 – Beckham

+0

学习不好的东西不好。你能解决你遇到的问题吗?现在,我没有看到你在申请中要求多少钱。 –

+0

仰望我对斯蒂芬的回答。 getIntInput是我的自定义方法来获取int。它包含一个JOptionPane。 – Beckham

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。它会这样做在飞行为你...