所以我正在为学校项目创建学生数据库。我的第一个问题是,在创建一个新学生时,我应该看到“申请号###已成功注册”。现在的问题是,每次记录一个新的应用程序时,我们必须从1顺序生成(###引用数字)。我该怎么做呢?
到目前为止,这是有什么,但我似乎无法获得增量生成的数字。
public TestApplication(String Surname, String personalIdNo)
{
if (isValidpersonalIdNo(personalIdNo) == true)
{
Student.add(Surname);
Application.put(personalIdNo, Student);
System.out.println("Application number ### " + "has registered successfully");
}
else
{
System.out.println("Application has failed, Personal id: " + personalIdNo);
}
}
任何有关这方面的帮助都会被贬低。
答案 0 :(得分:1)
由于您似乎使用了大量静态方法,我相信在这种情况下您最好的做法是创建一个名为 latestId 的静态字段和一个名为 generateId的静态方法,都在Student课程中。然后,只要您调用 Student.add ,就可以调用 generateId 方法。
但是,请注意,如果您的应用程序是多线程的,则此解决方案不起作用。
public class Student {
private static int latestId = 0;
public static int generateId() {
return ++latestId;
}
...
}
答案 1 :(得分:0)
您可以编写一个能为您生成ID的单例类:
class Generator {
private AtomicInteger count = new AtomicInteger(1);
private static Generator generator = new Generator();
private Generator() { }
public static Generator getInstance() {
return generator;
}
public int generate() {
return count.getAndIncrement();
}
}
现在,当您需要获取新ID时,只需调用generate方法即可。使用AtomicInteger
是因为您可能需要来自多个线程的id,并且它将使并发访问安全。
单例Generator
为id生成工具提供了一个入口点。
答案 2 :(得分:0)
您可以使用存储类型为您提供已添加到数据库中的学生数量。 我不知道你用什么类型来存储你的学生。如果是hashmap或vector,您可以使用size方法打印学生计数。所以我假设如果你有Application.put,你可能在你的应用程序类型中有一个用于存储每个学生的字段。然后你可以添加像getStudentsCount这样的方法,你应该全部设置。由于我对您的应用类型了解不多,以上都是假设。您可以在下面找到解决方法:
import java.util.HashMap;
import java.util.Vector;
class Student{
private String name;
private int personalID;
public Student(String name, int personalID){
this.name = name;
this.personalID = personalID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPersonalID() {
return personalID;
}
public void setPersonalID(int personalID) {
this.personalID = personalID;
}
}
class DB{
private HashMap<Integer, Student> students = new HashMap<Integer, Student>();
public boolean addStudent(Student student) {
Integer studentId = new Integer(student.getPersonalID());
if( !students.containsKey(studentId)){
students.put(new Integer(studentId), student);
return true;
}
else
return false;
}
public int getStudentCount() {
return students.size();
}
}
class Operations{
DB db;
public Operations(DB db){
this.db = db;
}
public boolean addStudent(String name, int personalID){
Student student = new Student(name, personalID);
return db.addStudent( student );
}
}
public class SimpleStudentDB {
public static void main(String [] args){
DB db = new DB();
Operations operations = new Operations(db);
if( operations.addStudent( "Jason", db.getStudentCount()+1) )
System.out.println("Student added successfully. DB contains ###"+db.getStudentCount()+" elements");
else
System.out.println("Operation failed");
}
}