数组整数逻辑
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 来保存分数。
我有一个带有进度表和数组的游戏。我想要一个图表,玩家可以看到它在最近 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 来保存分数。