2 limm1203 limm1203 于 2016.03.04 14:44 提问

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,但是如何获取学生记录个数,根据学生序号删除学生的记录,根据学生的姓名查询学生的记录,根据学生的姓名删除学生的记录。这几个不会做了。求大牛解答。跪谢!!

3个回答

luochoudan
luochoudan   Ds   Rxr 2016.03.04 16:36

遍历吧,筛选出stud[]中符合条件,数组的删除费点事。

xionglangs
xionglangs   Rxr 2016.03.04 18:34

@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+"学生不存在");
}
}
}

xionglangs
xionglangs 是,他有些null
接近 2 年之前 回复
limm1203
limm1203 调用查询这个方法还是会抛出异常
接近 2 年之前 回复
xionglangs
xionglangs   Rxr 2016.03.05 12:33

@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+"学生不存在");
}
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!