我有一个简单的程序,允许您通过将记录存储在数组上来添加,编辑,列出,搜索和删除记录.
我现在的问题是如何正确删除它上面的项目.这是我目前的代码.
System.out.print("Input number to delete: ");
delnum=scanz.nextLine();
intdelnum=Integer.parseInt(delnum);
name[intdelnum]=null;
course[intdelnum]=null;
gender[intdelnum]=null;
school[intdelnum]=null;
Run Code Online (Sandbox Code Playgroud)
如您所见,如果我列出这个包含10个元素的数组.我设置为null的数组索引将永远保持为null.我无法在其上添加任何内容.你知道如何做到这一点的更好的方法.因此,当我在索引2处删除数组元素时,索引3处的元素将会上升.索引2?所以后来我仍然可以在我设置为null的索引上添加一个元素.
你可以通过移动数组内容来手动完成,或者使用数组复制调用System.arraycopy,但你几乎肯定想要使用集合.ArrayList是一个可变数组的好选择.ArrayList.remove会让你删除索引:
ArrayList<...> name, course, gender, school;
intdelnum = Integer.parseInt(delnum);
name.remove(intdelnum);
course.remove(intdelnum);
gender.remove(intdelnum);
school.remove(intdelnum);
Run Code Online (Sandbox Code Playgroud)
关于您的代码段的其他一些随机说明:
我假设scanz是扫描仪.您可以调用nextInt()它而不是使用nextLine()String并将其转换为int.
您可能还想创建一个包含所有信息的类,而不是使用四个并行数组来跟踪它:
class Student {
enum Gender {MALE, FEMALE}
private String name;
private Course course; // This can be a String if that's simpler for your project
private Gender gender;
private School school; // See note for 'course'
}
ArrayList<Student> students;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6738 次 |
| 最近记录: |