我正在编写一个保龄球计分应用程序,并且正在努力计算我的罢工得分。如果玩家得分,则他们将获得该掷骰的分数(10)以及接下来两掷的分数。我正在尝试找出如何遍历数组以添加下两卷的结果。例如,我的分数数组可能是:
scores = [10, 1, 5, 1, 2, 10, 5, 2, 10, 10, 8, 1, 10, 3, 2]
我正在尝试遍历数组,以便每次得分为10时,将下两个数字加到总数中。我有以下代码:
for (i = 0; i < scores.length; i++) {
if(scores[i] == 10){
result += scores[i + 2]
}
return result
}
这不起作用。我对Java语言非常陌生!
P.S。我知道一个真正的保龄球游戏会获得十分之一的帧奖励,但我尚未实现该功能。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您必须在循环之外存储result
let result = 0;
for (i = 0; i < scores.length; i++) {
if (score[i] === 10) {
result += scores[i + 1];
result += scores[i + 2];
}
result += score[i];
}
或更实用的方法:
function calculateScore(scores) {
let result = 0;
scores.forEach((score, index) => {
if (score === 10) {
result += scores[index + 1];
result += scores[index + 2];
}
result += score;
});
return result;
}
并使用Array.reduce()
function calculateScore(scores) {
return scores.reduce((accumulator, currentValue, index) => {
if (currentValue === 10) {
return accumulator + currentValue + scores[index + 1] + scores[index + 2];
}
return accumulator + currentValue;
}, 0);
}
答案 1 :(得分:0)
function totalScore(ScoreArray) {
let result = 0;
for (i = 0; i < scores.length; i++) {
if (scores[i] == 10) {
result += scores[i + 2] + scores[i + 1];
}
result += scores[i];
}
return result;
}
totalScore([1, 5, 10, 3, 2]);
尽管您还需要额外的检查,但是您可以自己进行检查。
提示:确保数组中存在下两个值。然后仅将其添加到result
。如果最后一个值为10,则此函数将引发错误。
答案 2 :(得分:-1)
let result = 0;
for (let i = 0; i < scores.length; i++) {
if (scores[i] === 10) {
result += (i + 1 < scores.length) ? scores[i + 1] : 0;
result += (i + 2 < scores.length) ? scores[i + 2] : 0;
}
result += scores[i];
}