繁体   English   中英

如何在for循环中循环字符串数组

[英]How to loop string array in for loop

我想知道如何执行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);

由于您已经有6个player变量,您可以将它们放入数组中,然后复制数组的一部分。 不需要显式循环:

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

请注意,您只设置第一num_of_players元素players ,您将有null元素末(或任何恰好是这些元素的话); 并且for循环仍会遍历这些元素。

如果这不是您想要的,则可能需要考虑为players分配一个较小的列表:

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

或者,您可以将数组包装在列表中并获取一个子列表:

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

不确定循环是否适用于此,但由于每个块都重复了先前的工作,因此这种简化是可能的...

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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM