首页 > 解决方案 > 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;
}

标签: java

解决方案


你的方法应该是这样的:

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 与第一个学生进行比较,并且不会发现相等。然后它将学生添加到数据结构中。

希望,你明白了。:)


推荐阅读