-1

文本文件:

2 3
5 5
6 6
3 4
3 4
4 5
5 6
3 3
4 5

对于学校来说,我们必须制定的程序的一部分是获得“所有打出的洞中最高的洞的得分总和”。基本上,程序必须从上面的文本文件中读取,并且必须显示哪一行的总和最高。例如,第 1 行的总和为 5,第 2 行的总和为 10,等等。输出应为“12”,因为第 3 行的总和最高。

我试图做的是创建两个变量:currentSumScoresumScores. currentSumScore是一个测试,sumScores将包含最高的总和。

for (int roundNum = 1; roundNum <= 9; roundNum++)
{               
    player1Score = in.nextInt();
    player2Score = in.nextInt();

    currentSumScore = player1Score + player2Score;
    if (currentSumScore >= player1Score + player2Score)
    {
        sumScores = currentSumScore;
    }

    else
    {
        sumScores = player1Score + player2Score;    
    }
}

我在这里尝试做的是添加第一行的前两个数字并将其设置为currentSumScore. 然后,我输入了一个 if-else。如果第 2 行的总和大于第 1 行,则用 10sumScores代替。我试过了,但它只返回最后一行的总和。

4

3 回答 3

1
currentSumScore = player1Score + player2Score;
    if (currentSumScore >= player1Score + player2Score)

您将 currentSumScore 设为 player1Score + player2Score 的总和,因此当它检查 if 条件时,它将始终为真。您需要将当前总和与在此之前找到的较大值进行比较。

currentSumScore = player1Score + player2Score;
if (currentSumScore >= sumScores )
{
    //Actual sum is greater than previous
    sumScores = currentSumScore;
}

else
{
    //Do nothing, this line is not greater than one found before
    //This else is not needed
}

并从一个小值的 sumScores 开始,所以第一行总是更大 (0, -1...)

于 2013-11-06T01:46:10.507 回答
0

currentSumScore = player1Score + player2Score; if (currentSumScore >= player1Score + player2Score)

您正在设置 currentSumScore = player1Score + player2Score

然后你说如果它是> OR = to。它总是等于它之前的行。

在阅读任何分数之前开始,currentSumScore = 0然后检查 player1Score + player2Score 是否 >,而不是 >=。

于 2013-11-06T01:48:47.690 回答
0

您必须检查您保存的最后一个值

总分

if (currentSumScore > sumScores) {
     sumScores = currentSumScore;
}

并且不需要其他部分。试试这个,它应该工作。

于 2013-11-06T01:50:09.330 回答