java - Java中的重复注册
问题描述
这是我为我的作业编写的第一个 java 程序,我遇到了帐户注册重复的问题。我的想法是 addStudent 方法检查输入 ID 是否已存在于文本文件中,然后将新帐户写入文本文件。但事实证明,即使 ID 已经存在,它仍然会将新的学生帐户写入文本文件。
这是单击注册按钮时的代码。
try {
Student st = new Student();
st.setCategory("Student");
st.setStudID(studentID.getText());
st.setName(name.getText());
st.setEmail(email.getText());
st.setPhone(phone.getText());
st.setDegreeLevel(Integer.parseInt(level.getText()));
String outcome = new StudentAccessor().addStudent(st);
if (outcome.equalsIgnoreCase("done")) {
JOptionPane.showMessageDialog(this, "Student Added Successfully");
} else if (outcome.equalsIgnoreCase("undone")) {
JOptionPane.showMessageDialog(this, "Failed to register, Student already exists.");
}
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, ex.getMessage());
}
这是它调用的方法:
public String addStudent(Student student) throws IOException {
String feedback = null;
PrintWriter pw = null;
for (int i = 0; i < allStudents.size(); i++) {
Student a = allStudents.get(i);
if (student.getStudID().equals(a.getStudID())) {
feedback = "undone";
} else{
String entry = student.getStudID() + "," + student.getName() +
"," + student.getEmail() + "," + student.getDegreeLevel() +
"," + student.getPhone() + "," +
student.getCategory();
pw = new PrintWriter(new FileWriter("Student.txt",true));
pw.println(entry);
pw.close();
feedback = "done";
}
}
return feedback;
}
解决方案
你的方法应该是这样的:
public String addStudent(Student student) throws IOException {
String feedback = null;
PrintWriter pw = null;
for (int i = 0; i < allStudents.size(); i++) {
Student a = allStudents.get(i);
if (student.getStudID().equals(a.getStudID())) {
feedback = "undone";
break;
}
}
if(feedback == null) {
String entry = student.getStudID() + "," + student.getName() +
"," + student.getEmail() + "," + student.getDegreeLevel() +
"," + student.getPhone() + "," +
student.getCategory();
pw = new PrintWriter(new FileWriter("Student.txt",true));
pw.println(entry);
pw.close();
feedback = "done";
}
return feedback;
}
你需要比较所有的学生。然后只有您可以判断该 id 是否存在。您现在正在做什么,一旦 id 与任何学生都不匹配,您正在添加该学生。
假设一个学生与您发送给该方法的学生具有相同的 id。但它在列表的第二个索引中。现在您尝试过的会将 id 与第一个学生进行比较,并且不会发现相等。然后它将学生添加到数据结构中。
希望,你明白了。:)
推荐阅读
- mysql - Mysql Unknown column in where 子句 union all
- git - 在 Google Cloud Builder 中使用 git 命令
- python - 如何在不滚动python的情况下将flout数字作为17,8999变成17,8?
- json - 无法在 ESP8266(NodeMCU)和 PHP 实时服务器之间发送/接收 POST DATA REQUEST
- java - 从 switch case Java 中调用变量
- algorithm - 每日编码问题 316:硬币找零问题 - 确定面额?
- django-views - 在 Django 中上传大文件的文件夹/目录
- macos - DictUnifier App 正在 MacOS Catalina 上运行
- c - 使用结构指针数组时出现 free() 运行时错误
- java - 刷新片段而不是主要活动