数组整数逻辑

Array Integer Logic

我有一个带有进度表和数组的游戏。我想要一个图表,玩家可以看到它在最近 5 场比赛中的得分。

这是我数组中的代码

int[] Addition = { score1, score2, score3, score4, score5 };

if (score1 == 0) {
    score1 = Game.score;

} else if (score1 != 0 && score2 == 0) {
score2 = 21;
} else if (score2 != 0 && score3 == 0) {
score3 = Game.score;
} else if (score3 != 0 && score4 == 0) {
score4 = Game.score;
} else if (score4 != 0 && score5 == 0) {
score5 = Game.score;
}

我的逻辑有什么问题?当它运行时,我的第一场比赛得分似乎是正确的。但是当我再玩一个时,它只是数组的第一个元素正在改变吗?我哪里错了?顺便说一句,请为我的英语道歉。我感谢任何建议和评论。谢谢大家

:::更新:::

这是我的代码。谁能检查一下我的初始化是否正确:

public class ProgressGraph extends Activity {
int[] Addition = { 0, 0, 0, 0, 0 };

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    openChart();
}

public void openChart() {

for (int i = 0; i < 5; i++) {
    if (Addition[i] == 0) {
        Addition[i] = Game.score;
        break;
    }
}

这部分代码好像还不错。 我认为当你开始第二场比赛时你的分数数组会被重置。 您是否尝试在第二场比赛结束前打印 scores 数组?第一个分数是否保持存储?

那么我建议你使用这样的循环(未测试):

for (int i = 0; i < 5; i++) {
    if (score[i] == 0) {
        score[i] = Game.score;
        break;
    }
}

我会这样做:

for(int i = Addition.length-1; i > 0; i--){
    Addition[i] = Addition[i-1];
}
Addition[0] = Game.score;

这意味着最近的游戏将始终位于位置 0。如果用户玩了超过 5 场游戏,最旧的分数将被替换。

它还允许用户得分为 0。

您是否要将每个旧分数下移到列表中?

for (int i = 4; i > 0; i--) {
    Addition[i] = Addition[i-1];
}

Addition[0] = Game.score;

在我们提供的这些代码示例中,数组值应初始化为零:

int[] Addition = { 0, 0, 0, 0, 0};

考虑到您的更新。 - 声明数组时。该变量有一个大写字母,因此它可能与 class 有冲突。将 Addition 替换为 addition.

使用此代码,如果您开始另一个 activity,分数将被重置。您必须使用 Application extended class or SharedPreferences 来保存分数。