2017-02-18 114 views
1

我想知道我如何做一個for循環做一個for循環,以便根據玩家的數量顯示玩家姓名與擲骰子一起玩的數量用戶。如何在for循環中循環字符串數組

if (num_of_players == 1) { 
    players[0] = player1; 
} 
if (num_of_players == 2) { 
    players[0] = player1; 
    players[1] = player2; 
} 
if (num_of_players == 3) { 
    players[0] = player1; 
    players[1] = player2; 
    players[2] = player3; 
} 
if (num_of_players == 4) { 
    players[0] = player1; 
    players[1] = player2; 
    players[2] = player3; 
    players[3] = player4; 
} 
if (num_of_players == 5) { 
    players[0] = player1; 
    players[1] = player2; 
    players[2] = player3; 
    players[3] = player4; 
    players[4] = player5; 
} 
if (num_of_players == 6) { 
    players[0] = player1; 
    players[1] = player2; 
    players[2] = player3; 
    players[3] = player4; 
    players[4] = player5; 
    players[5] = player6; 
} 

for (String y : players) { 
    JOptionPane.showMessageDialog(null, "The first dice rolls " + y); 
+1

因爲你的變量'player1','player2'等,你不能在for循環中這樣做。但是你可以寫'if(num_of_players> = 1)players [0] = player1;如果(num_of_players> = 2)玩家[1] =玩家2; ...'。 –

+0

如果您爲每個名爲playerN的玩家分別設置了一個變量,那麼您的設計看起來可能存在某些缺陷。顯示更多的代碼來提供一些上下文,並且您會得到更多有用的答案。 – Martin

+0

你的骰子是什麼意思?請詳細說明你需要什麼幫助。 –

回答

1

不知道循環是適用在這裏,但這種簡化是可能的,因爲每塊重複以前的工作......

if (num_of_players == 1) { 
    players[0] = player1; 
} 
if (num_of_players >= 2) { 
    players[1] = player2; 
} 
if (num_of_players >= 3) { 
    players[2] = player3; 
} 
if (num_of_players >= 4) { 
    players[3] = player4; 
} 
if (num_of_players >= 5) { 
    players[4] = player5; 
} 
if (num_of_players >= 6) { 
    players[5] = player6; 
} 

解決這個將要創建的另一種方式數組並將其用於循環。更好的是player1,player2變量將是一個數組。

String [] playersArray = {player1, player2, player3, player4, player5, player6}; 

for (int i = 0; i< num_of_players; i++) { 
    players[i] = playersArray[i]; 
} 
3

既然你已經有了6個player變量,你可以把這些放到一個數組,然後採取的陣列的一部分的副本。有無需顯式循環:

String[] aPlayers = {player1, player2, player3, player4, player5, player6}; 
System.arraycopy(aPlayers, 0, players, 0, num_of_players); 

請注意,您只設置的players第一num_of_players元素,你將有null元素末(或任何恰好是這些元素的話); for循環仍然會遍歷這些元素。

如果這不是你想要的,你可能要考慮將較小的列表players

players = Arrays.copyOfRange(aPlayers, 0, num_of_players); 

或者你可以在列表中包裹的陣列,並採取子表:

for (String y : Arrays.asList(players).subList(0, num_of_players)) {