删除数组元素 - 将所有元素向下移动一个索引

Col*_*747 5 java arrays sorting

我有代码允许用户从他们选择的数组中删除一个元素,但是我想将所有现有元素“向下移动”,这样数组中就不会有间隙。

目前,如果我删除第一个元素(索引 0),它会被删除,但如果我向数组添加信息,它会在索引 1 处输入,索引 0 为空。如果从包含以下索引信息的索引中删除某些内容,我如何将所有信息向下移动一个索引?

我的删除方法:

  static void deleteStudent() {
    System.out.println("Wish student would you like to delete?");
    for(int i=0;i<9;i++) {
      System.out.println(i + ": " + studentNamesArray[i]);
    }
    int studentChoice = input.nextInt();
    for(int i = studentChoice+1; i<studentNamesArray.length; i++) {
      studentNamesArray[i-1] = studentNamesArray[i];
    }
  }
Run Code Online (Sandbox Code Playgroud)

编辑:

我在数组中添加了四个条目: [one, two, three, four, null, null, null, null, null, null]

我运行 then program 并尝试删除 index [2],这是成功输出以下内容: [one, two, four, null, null, null, null, null, null, null]

如您所见,元素根据需要向下移动,问题是当我再次向数组添加值时,已删除的索引被传递并且元素被输入到下一个索引中,见下文: [one, two, four, null, newadd, null, null, null, null, null]

我怎样才能让程序将新值输入到正确的数组中?

添加方法:

  static void addStudent() {
    if (nameArrayCount < 10) {
      System.out.println("Enter the student's name in the following format - surname, forename: ");
      studentName = input.next();
      studentNamesArray[nameArrayCount] = studentName;
      nameArrayCount = nameArrayCount + 1;
    }
    else if (nameArrayCount == 10) {
      System.out.println("******Array is full, please delete a student before adding another.*****");
    }
    if (markArrayCount < 10){
    System.out.println("Enter the first mark: ");
          markOne = input.nextInt();
          System.out.println("Enter the second mark: ");
          markTwo = input.nextInt();
          System.out.println("Enter the third mark: ");
          markThree = input.nextInt();
          studentMarksArray[markArrayCount][0] = markOne;
          studentMarksArray[markArrayCount][1] = markTwo;
          studentMarksArray[markArrayCount][2] = markThree;
          markArrayCount = markArrayCount + 1;
    }
  }
Run Code Online (Sandbox Code Playgroud)

Col*_*747 1

这是我的最终解决方案:

static int nameArrayCount, markArrayCount = 0;

  static void deleteStudent() {
    System.out.println("Which student would you like to delete?");
    for(int i=0;i<10;i++) {
      System.out.println(i + ": " + studentNamesArray[i]);
    }
    int studentChoice = input.nextInt();
    for(int i = studentChoice+1; i<studentNamesArray.length; i++) {
      studentNamesArray[i-1] = studentNamesArray[i];
    }
    nameArrayCount = nameArrayCount -1;
  }
Run Code Online (Sandbox Code Playgroud)