如何能够停止后面代码运行?

作者站长头像
站长
· 阅读数 4

如何能够停止后面代码运行?return执行之后,下面的语句不是都会忽略不执行的吗,为什么id重复之后,依然要输入姓名年龄住址,输入确实只返回数字1了,有没有什么方法能够在id重复时不用再输入姓名年龄住址//1.添加学生 id需要唯一

public static int addstudent(Student a){
    Scanner sc = new Scanner(System.in);
    Student st = new Student();
    ArrayList<Student> list = new ArrayList<>();
    int temp = 0;                                      //判断是否添加成功
    System.out.println("请输入学生id");
    for (int i = 0; i < list.size(); i++) {
        if (sc.next().equals(list.get(i).getId()) ){
        return temp; 
        }
    }
    st.setId(sc.next());
    System.out.println("请输入学生姓名");
    st.setName(sc.next());
    System.out.println("请输入学生年龄");
    st.setAge(sc.nextInt());
    System.out.println("请输入学生住址");
    st.setAddress(sc.next());
    temp = 1;
    return temp;
}

有没有什么方法能够在id重复时不用再输入姓名年龄住址

回复
1个回答
avatar
test
2024-06-20

新手学习建议善用debug

// 这个参数是干啥的…没用就去了吧
public static int addstudent(Student a){
    Scanner sc = new Scanner(System.in);
    Student st = new Student();
    // 这个list貌似是用来保存数据并做去重的,但是你这个作用范围,每次都是空的,相当于没用
    ArrayList<Student> list = new ArrayList<>();
    int temp = 0;                                      //判断是否添加成功
    System.out.println("请输入学生id");
    // 换成 for(Student s : list) 吧,谢谢
    for (int i = 0; i < list.size(); i++) {
        // 因为 list 是空的,所以代码不会执行到这里,这里有另外一个问题
        // 就是 sc.next() 会一直往下读,
        // 应该把 id 读取出来然后判断
        // 另外去重的话 Map<String, Student> 更合理
        if (sc.next().equals(list.get(i).getId()) ){
        return temp; 
        }
    }
    st.setId(sc.next());
    System.out.println("请输入学生姓名");
    st.setName(sc.next());
    System.out.println("请输入学生年龄");
    st.setAge(sc.nextInt());
    System.out.println("请输入学生住址");
    st.setAddress(sc.next());
    temp = 1;
    return temp;
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容