2016-02-11 30 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。它會這樣做在飛行爲你...