簡體   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