for循环的最后一行执行了两次?

Rob*_*ert 0 java for-loop

我是Java初学者,这是我的第一篇文章.我找不到任何与我的问题完全相同的东西,虽然这篇文章看起来很相似: 为什么这个打印行命令执行两次?

但答案并没有帮助我解决它.

我知道这可能是一些愚蠢的事情,但我希望你们中的一个人可能能够向我指出为什么名为"匹配"的数组中的最后一个条目打印两次.

罗伯特,提前谢谢.

这是我的代码:

public String buildMatchList(Match[] matches)
{   
        fixtures = "";

        int i = 0;
        for ( i = 0; i < numMatches; i++)
        {
            if (matches[i] != null)
            {
                fixtures += String.format("\n%-10.10s %10.9s %15.14s", matches[i].getTeamA(), " Vs ", matches[i].getTeamB());           
            }
        }
        System.out.println(fixtures);
}

// -EDIT -
// numMatches set in this method

public void fillMatchArray(Team[] sortedTeams, int numTeams)
    {
        int homeTeam = 0;
        int awayTeam = 0;
        goalsA = 0;
        goalsB = 0;
        fixtures = "";
        boolean played = false;
        matches = new Match[MAX_NUM_GAMES];
        for (homeTeam = 0; homeTeam < sortedTeams.length; homeTeam++)
            for (awayTeam =  homeTeam+1; awayTeam < sortedTeams.length; awayTeam++ )
            {
                String teamA = sortedTeams[homeTeam].getTeamName();
                String teamB = sortedTeams[awayTeam].getTeamName();             
                matchFixtures = new Match(teamA, teamB, goalsA, goalsB, played);
                {
                    fixtures += String.format("\n%-10.10s %10.9s %15.14s", 
                            matchFixtures.getTeamA(), " Vs ", matchFixtures.getTeamB());    
                }               
                int i = 0;          
                matches[i] = matchFixtures;         
                numMatches++;           
                buildMatchList(matches);
            }
    }
Run Code Online (Sandbox Code Playgroud)

Pet*_*rey 6

如果打印出两次,最可能的解释是最后两个条目是相同的.有一个常见的错误,你可以将一个可变对象添加到集合中两次,而你认为​​它们是不同的,但事实并非如此.

我建议您尝试逐步调试调试器中的代码,看看它在做什么?


这是踩过代码会有所帮助的地方.您每次都设置数组的第一个元素,因为我总是0

            int i = 0;          
            matches[i] = matchFixtures;         
            numMatches++; 
Run Code Online (Sandbox Code Playgroud)

改为

matches[numMatches++] = matchFixtures;         
Run Code Online (Sandbox Code Playgroud)