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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
顺序表中两个集合的并集
/*程序的版权和版本声明部分: *Copyright(c)2014,烟台大学计算机学院学生 *All rights reserved. *文件名称: *作者:田成琳 *完成日期:2014 年 9 月 2 日 *版本号:v1.0 *对任务及求解方法的描述部分: *问题描述:线性顺序表的简单应用 *程序输入:两个集合 *程序输出:两个集合的并集 *问题分析: *算法设计: */ #include #i
运用Java建立顺序表并操作其中元素
public class SeqList { private int number[]; private int length; private int maxSize; public static void main (String[] args)  { int maxSize=5; System.out.println(&quot;现创建一个最大长度为&quot;+maxSize+&quot;的顺序表并给予每个元素随机...
用顺序表求集合的交集、并集和差集
使用顺序表时, 需要定义一个数组来存储顺序表中的所有元素和定义一个整型变量来存储顺序表的长度。假定数组用data[MaxSize]表示,长度整型变量用length表示,并采用结构体类型表示,元素类型采用通用类型标识符ElemType,则顺序表的存储结构定义如下:  #define MaxSize 50 typedef int ElemType; typedef struct{ ElemTyp
顺序表的操作_求补、交、并集
 /********************************************************************************                                                                                           **    File       : aggregat
数据结构实验一(顺序表基本操作)题目和源程序
实验内容: 1.编写程序实现顺序表的下列基本操作: (1)初始化顺序表La。 (2)将La置为空表。 (3)销毁La。 (4)在La中插入一个新的元素。 (5)删除La中的某一元素。 (6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。 (7)打印输出La中的元素值。 2.编写程序完成下面的操作: (1)构造两个顺序线性表La和Lb,其元素都按值非递减顺序排列。 (2)实现归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减顺序排列。 (3)假设两个顺序线性表La和Lb分别表示两个集合A和B,利用 union_Sq操作实现A=A∪B。
数据结构实验--顺序表操作
记录一下: 数据结构实验。 #include #include #include #define LIST_INIT_SIZE 80 // 线性表存储空间的初始分配量 #define LISTINCREMENT 10 // 线性表存储空间的分配增量 using namespace std; typedef int Status; typedef int ElemTy
2015年大二上-数据结构-顺序表(1)-求集合并集
/* *Copyright (c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:Annpion.cpp *作者:王耀鹏 *完成日期:2015年10月22日 *版本号:v1.0 * *问题描述:求集合并集。 *输入描述:2个集合。 *输出描述:2个集合的并集。 */ #include "list.h" #include void
线性表——顺序表——时间复杂度计算2
接上一篇文章继续分析 线性表——顺序表——时间复杂度计算    在之前的文章中的示例1和示例2中,我们通过观察可以发现,当在顺序存储结构的线性表中某个位置上插入或删除一个数据元素时,其时间主要耗费在移动元素上(换句话说,移动元素的操作为预估算法时间复杂度的基本操作),而移动元素的格式取决于插入或删除元素的位置。   假设pip_i是在第i个元素之前插入一个元素的概率,则在长度为n的线性表中插入一个元
数据结构学习心得——顺序表
一、线性表的定义线性表是具有相同特性数据元素的一个有限序列。该序列中所含元素的个数叫做线性表的长度,用n(n>0)表示。二、线性表的存储结构线性表的存储结构有顺序存储和链式存储两种。前者称为顺序表,后者称为链表(链表见下篇博客,这里介绍下顺序表)。 顺序表 顺序表就是把线性表中的所有元素按照其逻辑顺序,一次存储到从指定的春初位置开始的一块连续的存储空间中。 顺序表的操作 顺序表的基本操作有初始化
顺序表的并集与交集(C语言)
C语言实现顺序表的并集与交集,程序内含详细的注释说明