我已经实现了在1和2中描述的这两个方法。我欣赏任何一种改进我的方法实现的评论。
toString。 toString返回列表的字符串表示形式。remove。 remove从列表中删除给定的课程。如果课程不在列表中,则不会更新该列表。执行代码时,将生成以下打印输出:<10、Algebra> <20、Algorithms> <30、Electronics> <40、Physics> <50、实现方法调用后的Programming>。<10 Algebra> <20 Algorithms> <50 Programming>
public class CourseList {
private static final int CAPACITY = 5;
// courses
private Course[] courses;
// the number of courses
private int courseCount;
public CourseList() {
courses = new Course[CAPACITY];
courseCount = 0;
}
// add adds a course to the list
public void add(Course course) {
courses[courseCount] = course;
courseCount++;
}
public void remove (Course course) {
int courseIndex = -1;
for (int i = 1; i < courseCount; i++)
if (courses[i].equals(course)) {
courseIndex = i;
break;
}
if (courseIndex != -1) {
for (int i = courseIndex; i < courseCount - 1; i++)
courses[i] = courses[i + 1];
courses[courseCount - 1] = null;
}
}
public String toString(){
StringBuilder sb = new StringBuilder();
for(int i = 0; i< courses.length; i++){
sb.append(courses[i]);
sb.append("\n");
}
return sb.toString();
}
public static void main(String[] args) {
CourseList list = new CourseList();
list.add(new Course(10, "Algebra"));
list.add(new Course(20, "Algorithms"));
list.add(new Course(30, "Electronics"));
list.add(new Course(40, "Physics"));
list.add(new Course(50, "Programming"));
System.out.println(list);
list.remove(new Course(40, "Physics"));
list.remove(new Course(30, "Electronics"));
System.out.println(list);
}
}发布于 2017-03-28 17:14:17
从1开始,移除元素时将跳过第一个元素。如果不打算对新数组执行任何操作,Remove不应该创建新数组。
如果要修改代码以更正不必要的新数组,还应该修复从索引1开始的问题。
https://codereview.stackexchange.com/questions/159151
复制相似问题