csdnlhh_123
ueiwui
采纳率50%
2015-12-22 02:27

java学生信息管理系统在删除信息的时候遇到了问题,代码如下,求大神。

1
  • java
已采纳

这是代码

主类

 public class Main {

    public static void main(String[] args) throws FileNotFoundException {
        int i = 0;
        Manage m=new Manage();
        Scanner sc=new Scanner(System.in);
        ArrayList List=new ArrayList<Student>();
        while(true){System.out.println("----------学生信息管理系统---------");
        System.out.println("-----1.导入学生成绩-----");
        System.out.println("-----2.查看学生信息-----");
        System.out.println("-----3.删除学生");

        System.out.println("请输入你的选项:");
        i=sc.nextInt();
        switch(i){
        case 1: m.loadFile(List);break;
        case 2: m.showInfornation(List); break;
        case 3: m.deleteS(List);break;
        }
        }

    }

}

#这是学生类

 public class Student {
    int number;
    String name;
    int yuwen;
    int shuxue;
    int yingyu;
    public String getName() {
        return name;
    }
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getYuwen() {
        return yuwen;
    }
    public void setYuwen(int yuwen) {
        this.yuwen = yuwen;
    }
    public int getShuxue() {
        return shuxue;
    }
    public void setShuxue(int shuxue) {
        this.shuxue = shuxue;
    }
    public int getYingyu() {
        return yingyu;
    }
    public void setYingyu(int yingyu) {
        this.yingyu = yingyu;
    }


}

这是管理类

 public class Manage {
    File f1=new File("F:\\ceshi\\doc11.txt");


    public void loadFile(ArrayList list) throws FileNotFoundException{
        Scanner sc=new Scanner(f1);
        String  nu=sc.next();
        String name1=sc.next();
        String yuwen1=sc.next();
        String shuxue1=sc.next();
        String  yingyu1=sc.next();
        System.out.println(nu+"    "+name1+"   "+yuwen1+"    "+shuxue1+"    "+yingyu1);
        while(sc.hasNext()){
        Student aa=new Student();

        aa.setNumber(sc.nextInt());
        aa.setName(sc.next());
        aa.setYuwen(sc.nextInt());
        aa.setShuxue(sc.nextInt());
        aa.setYingyu(sc.nextInt());
        list.add(aa);
        System.out.println(aa.getNumber()+"    "+aa.getName()+"    "+aa.getYuwen()+"   "+aa.getShuxue()+"   "+aa.getYingyu());


    }

    }
    public void showInfornation(ArrayList list){
        Student[] st=new Student[100];
        for(int i=0;i<list.size();i++){
            st[i]=(Student)list.get(i);
            System.out.println(st[i].getNumber()+"   "+st[i].getName()+"   "+st[i].getYuwen()+"  "+st[i].getShuxue()+"   "+st[i].getYingyu());
        }
    }
    public void deleteS(ArrayList list){
            int n;
            Student []arr=new Student[list.size()];
            Scanner in=new Scanner(System.in);
            int x;

            System.out.println("请输入要删除的学生编号");
            x=in.nextInt();
            for(n=0;n<list.size();n++)
            {   arr[n]=(Student) list.get(n);


            }


             for(n=0;n<list.size();n++){
                 if(arr[n].getNumber()==x);
                 {
                     System.out.println("xh="+arr[n].getNumber());
                     list.remove(n);
                     break;
                 }

             }




    }




    }

其中所需要的文件格式如下:

学号 姓名 语文 数学 英语
01 张三 44 55 55
02 李四 33 33 33
03 王五 22 2 2

我想说一下我目前的问题:

1.ArrayList这个集合如果我把它当做函数的参数传到函数内部,函数内部的ArrayList形参变化了,那么主类中的ArrayList会变化吗?

2.操作顺序:导入文件,删除学号2,查看文件,会发现把学号为1的删除了。不知道问什么,想了好久也不知道我这么写有什么错。

希望好心人回答一下,谢谢大家了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • qq_31325033 月苍 6年前
     for(n=0;n<list.size();n++){
                     if(arr[n].getNumber()==x);
                     {
                         System.out.println("xh="+arr[n].getNumber());
                         list.remove(n);
                         break;
                     }
    
                 }
    
    
    
    
    

    把你if后面的分号去掉

    点赞 1 评论 复制链接分享
  • daidaineteasy 晓呆同学 6年前

    问题1:会的,因为你把ArrayList当参数传递到方法中,这种传值方式是引用传递。具体你可搜下什么是值传递,什么是引用传递。
    问题2:你多了一个分号

         if(arr[n].getNumber()==x);//这后边多了一个分号
                     {
                         System.out.println("xh="+arr[n].getNumber());
                         list.remove(n);
                         break;
                     }
    

    另外,你这种写法有很多可优化的地方,不需要这么多for循环,还有你可以上网搜一下如何删除List中的元素。

    点赞 评论 复制链接分享
  • csdnlhh_123 ueiwui 6年前

    图片说明

    这是我的运行结果,2楼的不知为何不能查看图片。

    点赞 评论 复制链接分享
  • csdnlhh_123 ueiwui 6年前

    这是我的运行结果

    点赞 评论 复制链接分享

相关推荐