2017-02-17 56 views
0

我試圖創建一個for循環,允許用戶輸入多個玩家的名字(最多6個)並將每個玩家的名字存儲在一個變量(playerone,playertwo等;)中,提示用戶應該詢問是否要輸入其他玩家的姓名。我已經寫了for循環,但不知道如何將每個輸入分配給字符串變量。如果用戶在對話框中選擇否,它應該打破for循環。在JOptionPane中輸入多個名稱

if (text.equals(play)) { 
    { 
     { 
      String Playerone = JOptionPane.showInputDialog(null, "Enter Player 1:"); 
      textArea.append("Player 1: " + Playerone); 

      for (i = 2; i <= 6; i++) { 
       int n2 = JOptionPane.showConfirmDialog(null, "Enter another player?", "", 
         JOptionPane.YES_NO_OPTION); 

       if (n2 == JOptionPane.YES_OPTION) { 
        JOptionPane.showInputDialog(null, "Enter Player " + i + "\n"); 
        textArea.append("Player " + i + ":" + "\n"); 

       } 
       if (n2 == JOptionPane.NO_OPTION) { 

       } 
      } 

     } 
    } 
} 
+0

@OusmaneMahyDiaw正是這個代碼超過500行是不是很實際 –

+0

你有這一切。 'String Playerone = JOptionPane.showInputDialog(null,「Enter Player 1:」);'< - 這會回答你的第一個問題。第二個,只是在no if語句中寫'break'。 – Squiddie

回答

0
if (n2 == JOptionPane.YES_OPTION) { 
    JOptionPane.showInputDialog(null, "Enter Player " + i + "\n"); 
    textArea.append("Player " + i + ":" + "\n"); 

}else 
if (n2 == JOptionPane.NO_OPTION) { 
    break; 
} 

更換您的IFS在與此循環,它應該工作。你不能擁有動態變量名稱。使用任何類型的列表或陣列

+0

然後將每個輸入分配給一個變量名稱(playerone,playertwo等;)的最佳方式是什麼,因爲每個用戶名必須分配給這些變量之一 –

+0

首先,您可以將它們存儲在一個數組中,然後您必須初始化每個玩家都有一個變量,所以你最後有x行。但在整個程序中使用數組要好得多 – XtremeBaumer

0

只需使用break運算符即可。使用ArrayList將所有名稱存儲在變量中。

Java ArrayList類使用動態數組來存儲元素。當用戶按下OK

ArrayList<String> userNames=new ArrayList<String> 

if (n2 == JOptionPane.YES_OPTION) { 
    String playerName = JOptionPane.showInputDialog(null,"Enter Player " + i + ":"); 
    userNames.add(playerName); 
}else if(n2 == JOptionPane.NO_OPTION){ 
    break; 
} 

迭代ArrayList在Java

int i=1; 
for(String name:userNames){ 
    System.out.println("Player"+i+" : "+name); 
    i+=1; 
} 
0

JOptionPane.showInputDialog返回一個字符串,否則將返回null。

「我已經寫了for循環,但找不出如何將每個輸入分配給一個字符串變量」

String Playerone = JOptionPane.showInputDialog(null,"Enter Player 1:"); 

我可以看到你知道如何給每個值分配給一個字符串變量,不要」不能確定你的能力,除非你在不知道它的地方複製了那些代碼。由於我們有多個玩家,我使用一個字符串數組來存儲輸入。

要回答你的第二個問題,跳出你的循環,只需鍵入break;

總之,我們應該有這樣的事情:

String Playerone = JOptionPane.showInputDialog(null,"Enter Player 1:"); 
textArea.append("Player 1: " + Playerone); 

String[] playernames = new String[5]; 

for(i=2; i<=6;i++) { 

    int n2 = JOptionPane.showConfirmDialog(null,"Enter another player?" ,"",JOptionPane.YES_NO_OPTION); 

    if(n2 == JOptionPane.YES_OPTION) { 
     playernames[i-2] = JOptionPane.showInputDialog(null, "Enter Player "+ i + "\n"); 
     textArea.append("Player " + i + ":" + "\n"); 


    } 
    else if(n2 == JOptionPane.NO_OPTION) { 
      break; 

    } 
} 
+0

感謝您的幫助。當我使用這個,在我輸入第六個球員之後似乎關閉了這個程序,有沒有辦法阻止這個? –

+0

啊,對不起。您需要增加數組,將[]中的4替換爲5 - 我將編輯我的帖子。你想添加一個「無限」的玩家數量嗎?如果是這樣,請按Benjamin提到的那樣使用數組列表。 – Squiddie

+0

啊是的。謝謝。是否可以將數組的元素分配給變量?例如playernames [1]到'Playertwo' –