问题描述
- JAVA关于顺序表操作的问题。求大牛
-
public class StudScore { String name; int studentNo; double score; public StudScore() { } public StudScore(String name, int studentNo, double score) { this.name = name; this.studentNo = studentNo; this.score = score; } public void setName(String name) { this.name = name; } public void setStudentNo(int studentNo) { this.studentNo = studentNo; } public void setScore(double score) { this.score = score; } public String getName() { return name; } public int getStudentNo() { return studentNo; } public double getScore() { return score; } public String toString() { return name + "," + studentNo + "," + score; } } ================================================ public interface StudOPeration { void add(StudScore node); void listAll(); void search(int index); int getCounts(); void delete(int index); void search(String name); } ========================================== public class ArrStudent implements StudOPeration { StudScore stud[] = new StudScore[5]; int count = 0; String name; public ArrStudent() { } public ArrStudent(int size) { } @Override public void add(StudScore node) { int i = count; stud[i] = node; count++; if (count == stud.length) { System.out.println("存储空间已满"); } } @Override public void listAll() { for (int i = 0; i < count; i++) { System.out.print(stud[i].name + "t"); System.out.print(stud[i].studentNo + "t"); System.out.println(stud[i].score); } } @Override public void search(int index) { if (index <= count && index > 0) { System.out.println("您查找信息是:" + stud[index - 1]); } else { System.out.println("输入的序号无效!!"); } } @Override public int getCounts() { return 0; } @Override public void delete(int index) { } @Override public void search(String name) { } }
现在的问题就是实现了StudOPeration,但是如何获取学生记录个数,根据学生序号删除学生的记录,根据学生的姓名查询学生的记录,根据学生的姓名删除学生的记录。这几个不会做了。求大牛解答。跪谢!!
解决方案
遍历吧,筛选出stud[]中符合条件,数组的删除费点事。
解决方案二:
@Override
public int getCounts() {
System.out.println("现在共有"+count+"个学生");
return count;
}
/**
*尽量用list
*/
@Override
public void delete(int index) {
System.out.println("删除的学生是: "+stud[index-1].name);
stud[index-1]=null;
for(int i=0;i<stud.length-1;i++){
if(stud[i]==null){
stud[i]=stud[i++];//为空的后面的对象全部往前移一位
}
}
stud[stud.length-1]=null;//把最后一个赋值为null
}
@Override
public void search(String name) {
for(int i=0;i<stud.length;i++){
if(name.equals(stud[i].name)){
System.out.println("您要查询的"+name+"学生在第"+(i+1)+"位");
}else{
System.out.println("您要查询的"+name+"学生不存在");
}
}
}
解决方案三:
@Override
public void search(String name) {
for(int i=0;i<stud.length;i++){
if(stud[i]!=null &&name.equals(stud[i].name)){
System.out.println("您要查询的"+name+"学生在第"+(i+1)+"位");
}else{
System.out.println("您要查询的"+name+"学生不存在");
}
}
}