我在使用Java语言的zybooks中的第7.7章遇到了问题。挑战活动如下所述:
编写一个循环,将每个数组元素设置为自身和下一个元素的总和,但最后一个元素保持不变。注意不要超出最后一个元素。例如:
初始分数:10分,20分,30分,40分
循环后得分:30,50,70,40
第一个元素是30或10 + 20,第二个元素是50或20 + 30,第三个元素是70或30 + 40.最后一个元素保持不变。
所以这是我在其代码中提供的代码,我会说哪部分是我的代码:
public class StudentScores {
public static void main (String [] args) {
final int SCORES_SIZE = 4;
int[] bonusScores = new int[SCORES_SIZE];
int i = 0;
bonusScores[0] = 10;
bonusScores[1] = 20;
bonusScores[2] = 30;
bonusScores[3] = 40;
if (SCORES_SIZE==0){
System.out.println("");
}
else if (SCORES_SIZE==1){
bonusScores[i]=bonusScores[i];
}
else{
for (i=0; i<SCORES_SIZE; ++i){
if (i==3){
bonusScores[i]=bonusScores[i];
}
else{
bonusScores[i]=bonusScores[i]+bonusScores[i+1];
}
}
}
for (i = 0; i < SCORES_SIZE; ++i) {
System.out.print(bonusScores[i] + " ");
}
System.out.println();
return;
}
}
所以我可以改变的唯一部分就是我的代码在oldscores [3]部分之后开始并在else语句之后结束。所以我的问题是这是程序用我的代码做的事情:
测试bonusScores = {10,20,30,40} 你的输出 30 50 70 40 检查
测试bonusScores = {199} 你的输出 199检查
运行时错误 程序结束从未到达。 这通常是由于无效的内存/阵列访问或除以0。
所以我不知道它正在做什么导致运行时错误,因此显然不知道该怎么办。如果有人通过了这个,请告诉我。我知道有一条线就是这个:
Copying and modifying array elements
然而,这个帖子与我的不同,因为那是我刚刚在没有该线程帮助的情况下完成的。因此,请不要说不可能重复。提前致谢。
答案 0 :(得分:0)
public class StudentScores {
public static void main (String [] args) {
final int SCORES_SIZE = 4;
int[] bonusScores = new int[SCORES_SIZE];
int i;
bonusScores[0] = 10;
bonusScores[1] = 20;
bonusScores[2] = 30;
bonusScores[3] = 40;
for(i = 0; i < SCORES_SIZE -1; i++) {
bonusScores[i] = bonusScores[i] + bonusScores[i+1];
}
for (i = 0; i < bonusScores.length; ++i) {
System.out.print(bonusScores[i] + " ");
}
System.out.println();
}
}