本文探讨如何在Java程序中,有效处理学生信息录入时ID重复的问题,避免重复输入其他信息。
问题: 现有代码在检测到学生ID重复后,仍然继续执行后续的姓名、年龄、地址录入流程。
改进方案: 通过改进数据结构和代码逻辑,在检测到ID重复时立即停止后续操作。
解决方案:
采用HashMap
存储学生信息,以学生ID作为键,实现高效的ID重复性检查。 修改后的代码如下:
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class StudentManager { private static MapstudentMap = new HashMap<>(); public static int addStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生ID:"); String studentId = scanner.next(); if (studentMap.containsKey(studentId)) { System.out.println("学生ID已存在,添加失败!"); return 0; // ID重复,立即返回 } Student student = new Student(); student.setId(studentId); System.out.print("请输入学生姓名:"); student.setName(scanner.next()); System.out.print("请输入学生年龄:"); student.setAge(scanner.nextInt()); System.out.print("请输入学生住址:"); student.setAddress(scanner.next()); studentMap.put(studentId, student); System.out.println("学生信息添加成功!"); return 1; } public static class Student { private String id; private String name; private int age; private String address; //getter and setter methods public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } public static void main(String[] args) { addStudent(); } }
代码解释:
使用HashMap: studentMap
使用HashMap
存储学生信息,键为学生ID,值为Student
对象。HashMap
提供了containsKey()
方法,可以快速高效地检查ID是否存在。
提前检查ID: 在录入其他信息之前,立即使用studentMap.containsKey(studentId)
检查ID是否已存在。如果存在,则打印错误信息并立即返回,停止后续操作。
静态变量: studentMap
声明为静态变量,保证在多次调用addStudent()
方法时,数据可以被保留。
通过这些改进,程序能够在检测到ID重复时立即停止,避免了不必要的输入操作,提高了代码效率和用户体验。
Java 函数式编程范式与面向对象编程范式的比较
Spring Boot项目启动Jar包冲突,如何快速排查并解决?
子类如何通过父类方法修改父类私有属性?
在Java编程中,如果你想在检测到学生ID重复时停止后续代码的执行,可以使用return语句或者抛出异常来实现。以下是两种常见的方法:方法一:使用return语句这种方法适用于在方法内部检测到重复ID时,直接返回,停止后续代码的执行。public void processStudent(Student student) { if (isStudentIdDuplicate(student.getId())) { System.out.println("学生ID已存在,停止处理。")
在 Android Fragment 中,如何最佳地调用 Activity 方法?
HttpServletResponseWrapper加密接口返回值时如何避免中文乱码?