繁体   English   中英

java 控制台 oop 中的自动增量 ID

[英]auto increment ID in java console oop

我的程序中有 3 种类型的用户,当我想添加它们时,我希望 id 在我的文件中自动递增,我做了一个切换案例,我要添加这些人,我尝试使用 id = ++计数(在代码中)但它仅适用于当前用户(enseignant)当我切换到另一个(学生)它从 0 开始而不是最后使用的 id

public void addRecord(Scanner strInput) throws IOException {
    int count = 0; 
     int id;
     boolean isFilled; 

    BufferedWriter bw = new BufferedWriter(new FileWriter("adherent_db.txt", true));
    String nom = " ";

    System.out.println("donner le type d'adherent ");
    System.out.println("1)Enseignant\t2)etudiant\t3)visiteur ");
    int c = strInput.nextInt();
    switch (c) {
    case 1:
        Enseignant enseignant = new Enseignant();
           isFilled = false;   // sets false to false
                id = ++count; 
        enseignant.setId(id);

        System.out.println("Enter le nom d'Enseignant: ");
        nom = strInput.nextLine();
        enseignant.setNom(nom);

        System.out.println("Entrer le prenom d'Enseignant: ");
        prenom = strInput.nextLine();
        enseignant.setPrenom(prenom);

        System.out.print("Entrer l'adresse d'Enseignant: ");
        adresse = strInput.nextLine();
        enseignant.setAdresse(adresse);

        Enseignant.getType();

        bw.write(enseignant.toString());
        bw.flush();
        bw.newLine();
        bw.close();
        break;
    case 2:
        Etudiant etudiant = new Etudiant();
             isFilled = false;  // sets false to false
                id = ++count; 
        etudiant.setId(id);
        System.out.println("Enter le nom etudiant: ");

如何为所有用户创建一个自动增量ID,有什么帮助吗?

您可以使用分配增加 id,如下所示:

 public void addRecord(Scanner strInput) throws IOException {
        int id = 1;
        boolean isFilled;

        BufferedWriter bw = new BufferedWriter(new FileWriter("adherent_db.txt", true));
        String nom = " ";

        System.out.println("donner le type d'adherent ");
        System.out.println("1)Enseignant\t2)etudiant\t3)visiteur ");
        int c = strInput.nextInt();
        switch (c) {
            case 1:
                Enseignant enseignant = new Enseignant();
                isFilled = false; // sets false to false
                enseignant.setId(id++);

                System.out.println("Enter le nom d'Enseignant: ");
                nom = strInput.nextLine();
                enseignant.setNom(nom);

                System.out.println("Entrer le prenom d'Enseignant: ");
                prenom = strInput.nextLine();
                enseignant.setPrenom(prenom);

                System.out.print("Entrer l'adresse d'Enseignant: ");
                adresse = strInput.nextLine();
                enseignant.setAdresse(adresse);

                Enseignant.getType();

                bw.write(enseignant.toString());
                bw.flush();
                bw.newLine();
                bw.close();
                break;
            case 2:
                Etudiant etudiant = new Etudiant();
                isFilled = false; // sets false to false
                etudiant.setId(id++);
                System.out.println("Enter le nom etudiant: ");
        }
    }

您有几个选择,但最直接和直接的方法是让您的 ID 计数为static变量。

什么是static variable

Java 中的 Static 变量是属于 class 的变量,在执行开始时仅初始化一次。 它是属于 class 而不是对象(实例)的变量。 Static 变量仅在执行开始时初始化一次。 这些变量将在初始化任何实例变量之前首先被初始化。

由 class 的所有实例共享的单个副本 static 变量可以通过 class 名称直接访问,不需要任何 static 名称,不需要任何 static 名称

来源: guru99.com

这意味着正在运行的 JVM 中只有一个副本,因此从任何地方访问它都会返回相同的值。

它本身不是线程安全的,但对于一个简单的单线程程序来说应该足够了。

private static int NEXT_ID = 0; // set this to whatever starting ID you want

public static int getNextId() {
    return MyClass.NEXT_ID++; // return the current NEXT_ID and then increment
}

现在你可以像这样使用它:

id = MyClass.getNextId(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM