我有一段代码,允许用户从他们选择的数组中删除一个元素,但是我希望将所有现有元素“下移一个”,以便在数组中不留下空隙。
目前,如果我删除第一个元素(索引0),它会被删除,但如果我向数组添加信息,则该信息会输入到索引1,而索引0则为空。如果从具有以下索引中的信息的索引中删除了某些内容,如何将所有信息下移一个索引?
我的删除方法:
目前,如果我删除第一个元素(索引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];
}
}
编辑:
我在数组中添加了四个条目:
[one, two, three, four, null, null, null, null, null, null]
我运行程序并尝试删除索引[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;
}
}