| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2807 人关注过本帖
标题:为甚么字符串数组出了循环不能保存?
只看楼主 加入收藏
好烦、
Rank: 2
等 级:论坛游民
帖 子:78
专家分:72
注 册:2020-10-10
结帖率:87.5%
收藏
 问题点数:0 回复次数:1 
为甚么字符串数组出了循环不能保存?
主函数大致如下:
程序代码:
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函数后不能永久的保存数据?
一种图片可能表述的更清晰:
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: Student String new this public 
2021-12-11 14:11
z44421
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2022-2-13
收藏
得分:0 
因为你的Student.add方法入参的sts数组是基本数据类型。while(true) 循环里面用的永远都是上面你定义的那一个数组。
2022-02-13 17:15
快速回复:为甚么字符串数组出了循环不能保存?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017897 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved