Java使用其他元素修改数组元素 - zybooks

时间:2017-10-15 01:29:23

标签: java arrays

我在使用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

然而,这个帖子与我的不同,因为那是我刚刚在没有该线程帮助的情况下完成的。因此,请不要说不可能重复。提前致谢。

1 个答案:

答案 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();
    }
}