为甚么字符串数组出了循环不能保存?
主函数大致如下:程序代码:
package Student; import java.util.*; public class Main { public static void main(String[] args) throws Exception { Scanner input=new Scanner(System.in); Student[] sts = { new Student("101", "wang"), new Student("102", "li"), new Student("103", "zhang"), new Student("104", "qiao"), new Student("105", "wu") }; while(true) { String[] in =input.nextLine().split("\\s+"); //正则表达式分割空格 // 操作 if(in[0].equals("exit")) { System.out.println(sts.length); break; } switch(in[0]) { case "add": Student.add(sts, in[1], in[2],true); break; case "delete": Student.delete(sts, in[1], in[2]); break; case "update": Student.update(sts, in[1], in[2]); break; } } } }
Student.class如下:
程序代码:
package Student; import import import java.util.Arrays; class Student implements Comparable<Student>{ private String sno; //学号 private String sname; //姓名 public Student(String sno,String sname){ this.sno=sno; this.sname=sname; } public String getSno() { return this.sno; } public String getSname(){ return this.sname; } public void updateName(String s) { sname=s; } // public static void add(Student[] sts,String no,String name,boolean isPrint) throws Exception{ // 检验该学生是否已经存在 boolean isIn=false; for(int i=0;i<sts.length;i++) if(no.equals(sts[i].getSno())) isIn=true; if(isIn) throw new Exception("无法新增,学号与已有学生信息重复"); // 不存在则扩容并加入 sts=Arrays.copyOf(sts, sts.length+1); sts[sts.length-1]=new Student(no,name); if(isPrint) sortAndPrint(sts); } // sort的实现 public int compareTo(Student a) { return Integer.parseInt(this.getSno())>=Integer.parseInt(a.getSno())? 1:-1; } // 排序输出 public static void sortAndPrint(Student[] sts) { Arrays.sort(sts); for(int i=0;i<sts.length;i++) System.out.println(sts[i]); } // toString类 public String toString() { return this.sno+" "+this.sname; } }
其他方法(删除、更新学生)类似,我的问题是为甚么我使用add函数后不能永久的保存数据?
一种图片可能表述的更清晰: