如何使用嵌套循环将值存储在数组列表中

How to store values in an arraylist using nested loops

我正在 Netbeans 中编写一个梦幻篮球队程序,其中 10 支球队与每支球队进行 2 场比赛,我试图跟踪每支球队的输赢次数。十支球队存储在一个数组列表中,我设置了两个循环来遍历数组而不重复,但我无法弄清楚如何跟踪每支球队的输赢和将它们存储在我的数组中的正确位置。代码如下

for (x = 0; x < alCTeams.size() - 1; x++) {
    for (y = x + 1; y < alCTeams.size(); y++) {
        for (iGameCount = 0; iGameCount < 2; iGameCount++) {
            do {
                iHTScore = rndGenerator.nextInt(100);
                iVTScore = rndGenerator.nextInt(100);

                if (iGameCount % 2 == 0)
                    iHTScore += 5;
                else
                    iVTScore += 5;

            } while (iHTScore == iVTScore);

            if (iHTScore > iVTScore) {
                iHTWins++;
                iVTLosses++;
            } else {
                iHTLosses++;
                iVTWins++;
            }
        }
        alCTeams.get(y).setWins(iVTWins);
        alCTeams.get(y).setWins(iVTLosses);
    }
    alCTeams.get(x).setWins(iHTWins);
    alCTeams.get(x).setLosses(iHTLosses);
}

检查下面的代码:我已经添加了注释来描述。

for (x = 0; x < alCTeams.size()-1; x++) {
        for (y = x+1; y < alCTeams.size(); y++) {

            // Before game begins, reset the stats to zero
            iHTWins   = 0;
            iVTLosses = 0;
            iHTLosses = 0;
            iVTWins   = 0;

            for (iGameCount = 0; iGameCount < 2; iGameCount++) {
                do {
                    iHTScore = rndGenerator.nextInt(100); 
                    iVTScore = rndGenerator.nextInt(100); 

                    if (iGameCount % 2 == 0) {
                        iHTScore += 5;
                    } else {
                        iVTScore += 5;
                    }
                } while (iHTScore == iVTScore);

                if (iHTScore > iVTScore) {
                    iHTWins++;
                    iVTLosses++;
                } else {
                    iHTLosses++;
                    iVTWins++;
                }
            }
            alCTeams.get(y).setWins(alCTeams.get(y).getWins() + iVTWins);
            alCTeams.get(y).setLosses(alCTeams.get(y).getLosses() + iVTLosses);

            // Moved inside loop
            alCTeams.get(x).setWins(alCTeams.get(x).getWins() + iHTWins);
            alCTeams.get(x).setLosses(alCTeams.get(x).getLosses() + iHTLosses);
        }
    }

您应该检索各自循环内每个团队的当前 wins/losses 数量。否则你只是在增加一些一般的输赢计数并将它们随机存储到团队中:

for (x = 0; x < alCTeams.size() - 1; x++) {
    // retrieve current wins/losses for team x
    iHTWins = alCTeams.get(x).getWins();
    iHTLosses = alCTeams.get(x).getLosses();

    for (y = x + 1; y < alCTeams.size(); y++) {
        // retrieve current wins/losses for team y
        iVTWins = alCTeams.get(y).getWins();
        iVTLosses = alCTeams.get(y).getLosses();

        for (iGameCount = 0; iGameCount < 2; iGameCount++) {
            // do 2 game stuff
        }
        // store wins/losses for team y back to list
        alCTeams.get(y).setWins(iVTWins);
        alCTeams.get(y).setLosses(iVTLosses);  // set losses, not wins
    }
    // store wins/losses for team x back to list
    alCTeams.get(x).setWins(iHTWins);
    alCTeams.get(x).setLosses(iHTLosses);
}