Search code examples
javaauto-increment

How to Auto increment an ID in java


I am trying to auto increment an ID when I add a friend. Somehow I get an output as with ID (1,2,3,3,3..)

My following code for a Freunde class is

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Freunde {
    
    private static int idCache = 1;

    private final int id;
    public String Name; //Datenfeld Name
    public String Vorname; //Datenfeld Vorname
    public String Geburtsdatum; //Datenfeld Geburtsdatum
    public String Telefon; //Datenfeld Telefon
    public String Handy; //Datenfeld Handy
    public String Email; //Datenfeld E-Mail
    public String Adresse; //Datenfeld Adresse
        
    @Override
    public String toString() {
        return "Freunde{" +
                + id +
                ", '" + Name + '\'' +
                ", '" + Vorname + '\'' +
                ", '" + Telefon + '\'' +
                ", '" + Geburtsdatum + '\'' +
                 ", '" + Handy + '\'' +
                ", '" + Email + '\'' +
                ", '" + Adresse + '\'' +
                '}';
    }

    
    public ArrayList<Object> Kontakt = new ArrayList<Object>();

    
    public ArrayList<Object> Kontakt() 
    {
        return Kontakt;
    }
    
    Iterator<Object> input = Kontakt.iterator();

    /**************** Starting of set methods ************************/
    

    public void setVorname(String Vorname) {
        this.Vorname=Vorname;
        }   
    public void setName(String Name) {
        this.Name=Name;
    }
    public void setGeburtsdatum(String Geburtsdatum) {
        this.Geburtsdatum=Geburtsdatum;
    }
    public void setTelefon(String Telefon) {
        this.Telefon=Telefon;
    }
    public void setHandy(String Handy) {
        this.Handy=Handy;
    }
    public void setEmail(String Email) {
        this.Email=Email;
    }
    public void setAdresse(String Adresse) {
        this.Adresse=Adresse;
    }
    
    public Freunde() {
        this.id = idCache;
        idCache++;
    }
    
    public void setKontakt (ArrayList<Object> Kontakt) {
        this.Kontakt=Kontakt;
        }

    /****************End of set methods************************/    
    
    /****************Starting of get methods************************/
    
    public String getName() {
        return Name;
    }
    public String getTelefon() {
        return Telefon;
    }
    public String getHandy() {
        return Handy;
    }
    public String getVorname() {
        return Vorname;
    }
    public String getEmail() {
        return Email;
    }
    public String getGeburtsdatum() {
        return Geburtsdatum;
    }
    public String getAdresse() {
        return Adresse;
    }
    public ArrayList<Object> getKontakt() {
        return Kontakt;
    }  
    

    
    /****************End of get methods************************/
    

    /****************add a friend method************************/
    public void anlegen() {   
    Kontakt.add(id);
    Kontakt.add(Vorname);
    Kontakt.add(Name);
    Kontakt.add(Geburtsdatum);
    Kontakt.add(Handy);
    Kontakt.add(Telefon);
    Kontakt.add(Email);
    Kontakt.add(Adresse);
    }   
    /****************remove a friend method************************/
    public void löschen(){
//  Kontakt.remove(Id);
    Kontakt.remove(Vorname);
    Kontakt.remove(Name);
    Kontakt.remove(Geburtsdatum);
    Kontakt.remove(Handy);
    Kontakt.remove(Telefon);
    Kontakt.remove(Email);
    Kontakt.remove(Adresse);
    }
    
    /****************change a friend method************************/    
    public void ändern()
    {
//  Kontakt.set(0, "Id");
    Kontakt.set(0, Vorname);
    Kontakt.set(1, Name);
    Kontakt.set(2, Geburtsdatum);
    Kontakt.set(3, Handy);
    Kontakt.set(4, Telefon);
    Kontakt.set(5, Email);
    Kontakt.set(6, Adresse);
    }   
    /****************End of array methods************************/

    /**************** Durchsuche alles nach Name 
     * @return *********************/

    public boolean suche(String Name) {
        for (int i = 0; i < Kontakt.size(); i++) {
            if (Kontakt.get(i).equals(Name)) {
                System.out.println("element found:"+ Kontakt.get(i).equals(Name));
            } 
            
    }
        return false;
    }
    
    
    public boolean contains(String bornlist) {
        return false;
        // TODO Auto-generated method stub
        }

    public static int size() {
        // TODO Auto-generated method stub
        return 0;
    }

    public int get(int i) {
        // TODO Auto-generated method stub
        return 0;
    }

    public void contains() {
        // TODO Auto-generated method stub
    }
    
     public void setKontakt(Integer Id, String vorname, String name, String geburtsdatum, String telefon, String handy, String email, String adresse)
        {
            setVorname(vorname);
            setName(name);
            setGeburtsdatum(geburtsdatum);
            setTelefon(telefon);
            setHandy(handy);
            setEmail(email);
            setAdresse(adresse);
        }//end constructor for friend


    public void setKontakt(String vorname2, String name2) {
        // TODO Auto-generated method stub
        
    }


    public static Iterator<String> iterator() {
        // TODO Auto-generated method stub
        return null;
    }

   
    }

I get the output in an array list as

Liste der Freunde

Kontakt:Freunde{1, 'Müller', 'Thomas', '0100', '15/08/1992', '018649', 'thomas.mueller@gmx.de', 'Friee 7, 14455 Berg, Deutschland'},
Kontakt:Freunde{2, 'Müller', 'Andrea', '01700', '15/01/1998', '017849', 'andrea.mueller@gmx.de', 'Im Hafen 9, 18500 Rheinsberg, Deutschland'},

Now if I add the friends with the option 2, a list of friend is added but the ID always remains the same even though I increment the ID as idCache++.

**[3, Anush, dmawd, dwalkndw, dwwkad, dwaklndaw, dwakdnaw, dawiiha, 3, mda, fsefjfk, awdjoaw, dawjamd, dawojda, dawmoaöd, dawödöaw]**

The class for choosing the options in adding a friend or removing a friend is noted below.

import java.util.Iterator;
import java.util.ListIterator;
import java.util.Scanner;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Constructor;
import java.util.Random;


public class Karteiprogramm {

//  private static Integer id;
    private static Scanner input;
    private static int selection;


    /**************** Start of Menu method ************************/

    public void menu() {

        System.out.println("\nNummer der Auswahl eingeben: ");
        System.out.println("[1] Alle Freunde anzeigen");
        System.out.println("[2] Freund anlegen");
        System.out.println("[3] Freund löschen");
        System.out.println("[4] Freund bearbeiten");
        System.out.println("[5] Freund suchen");
        System.out.println("[0] Programm beenden");
    }

    /**************** End of menu method ************************/

    /**************** Start of selection method ************************/

    /****************
     * Start of Mainprogram
     * 
     * @throws IOException
     ***************************/

    public static void main(String[] args) throws IOException {

        /**************** Freunde Beispiele ************************/

        // Objekt der Klasse Freund anlegen
        // Karteikarte Freund f1;
        for (int i = 0; i <= 10; i++) {
        Freunde f1 = new Freunde();

        f1.setVorname("Thomas");
        f1.setName("Müller");
        f1.setGeburtsdatum("15/01/1992");
        f1.setTelefon("01726494800");
        f1.setHandy("01879845649");
        f1.setEmail("thomas.mueller@gmx.de");
        f1.setAdresse("Friedenstraße 7, 14455 Berg, Deutschland");

        // Karteikarte Freund f2;
        Freunde f2 = new Freunde();
        f2.setVorname("Andrea");
        f2.setName("Müller");
        f2.setGeburtsdatum("15/01/1998");
        f2.setTelefon("0177595200");
        f2.setHandy("01764591849");
        f2.setEmail("andrea.mueller@gmx.de");
        f2.setAdresse("Im Hafen 9, 18500 Rheinsberg, Deutschland");

        /**************** Ende Freunde Beispiele ************************/

        Freunde bornList = new Freunde(); // Kartei für neuen Freund

        // Freunde removeList = new Freunde ();

        Scanner input = new Scanner(System.in); // Scanner für Tastatureingabe

        Karteiprogramm Start = new Karteiprogramm(); // neues Objekt vom Typ Karteiprogramm
        Start.menü(); // Aufruf der Methode menü()

        Kartei Eingabe = new Kartei();

        int selection = input.nextInt(); // Scanner für Tastatureingabe für Integer

        /* Kartei[] data = new Kartei [1]; */
        
        while (selection != 0) {
            int nummer = 0;

            if (selection == 1) {
                for (int j = 0; j < 1; j++) {
                    System.out.println("Liste der Freunde");
                    /* Eingabe.addLists(); */
                    System.out.println("Kontakt:" + f1 + ",");
                    System.out.println("Kontakt:" + f2 + ",");
                    for (int i1 = 0; i1 < 1; i1++) {
                        System.out.println(bornList.Kontakt);
                    }
                    // System.out.println (bornList.Kontakt);
                    System.out.println("Taste drücken, um zum Menu zurückzukehren");
                    System.in.read();
                    Start.menü();
                    selection = input.nextInt();
                }

                Integer id = null;
                //              int id = f1.getId();
                if (selection == 2) { // Anlegen
                    System.out.println("Kontaktdaten");
                    System.out.println("---------------------");
                    System.out.printf("Vorname: ");
                    input = new Scanner(System.in);
                    String vorname = input.next();
                    System.out.printf("Nachname: ");
                    String name = input.next();
                    System.out.printf("Geburtstag: ");
                    String geburtsdatum = input.next();
                    System.out.printf("Festnetz: ");
                    String telefon = input.next();
                    System.out.printf("Handy: ");
                    String handy = input.next();
                    System.out.printf("Email: ");
                    String email = input.next();
                    System.out.printf("Adresse: ");
                    String adresse = input.next();

                    bornList.setKontakt(id, vorname, name, geburtsdatum, telefon, handy, email, adresse); // sets the values
                                                                                                        // for friend
                    bornList.anlegen(); // adds the friend to the array list
                    System.out.println("Taste drücken, um zum Menu zurückzukehren");
                    System.in.read();
                    Start.menü();
                    selection = input.nextInt();

                }

                if (selection == 3) { // Löschen
                    System.out.println("Welcher Freund soll gelöscht werden?");
                    System.out.println("---------------------");
                    System.out.printf("Vorname: ");
                    input = new Scanner(System.in);
                    String Vorname = input.next();
                    System.out.printf("Nachname: ");
                    String Name = input.next();
                    bornList.setKontakt(Vorname, Name); // sets up the friend to remove
                    bornList.löschen(); // removes the friend from the array list
                    System.out.println("Taste drücken, um zum Menu zurückzukehren");
                    System.in.read();
                    Start.menü();
                    selection = input.nextInt();
                }

                if (selection == 4) { // Ändern
                    System.out.println("Welcher Freund soll geändert werden?");
                    System.out.println("---------------------");
                    System.out.printf("Vorname: ");
                    input = new Scanner(System.in);
                    String vorname = input.next();
                    System.out.printf("Nachname: ");
                    String name = input.next();
                    bornList.setKontakt(vorname, name); // sets the values for friend*/

                    System.out.println("---------------------");
                    System.out.printf("Vorname: ");
                    input = new Scanner(System.in);
                    String vorname2 = input.next();
                    System.out.printf("Nachname: ");
                    String name2 = input.next();
                    System.out.printf("Geburtstag: ");
                    String geburtsdatum = input.next();
                    System.out.printf("Festnetz: ");
                    String telefon = input.next();
                    System.out.printf("Handy: ");
                    String handy = input.next();
                    System.out.printf("Email: ");
                    String email = input.next();
                    System.out.printf("Adresse: ");
                    String adresse = input.next();
                    
                    
                    bornList.setKontakt(id,vorname2, name2, geburtsdatum, telefon,handy, email, adresse);
                    bornList.ändern(); // adds the friend to the array list
                    
                    System.out.println("Taste drücken, um zum Menu zurückzukehren");
                    System.in.read();
                    Start.menü();
                    selection = input.nextInt();
                }

                if (selection == 5) { // suchen
                    System.out.println("Welcher Name wird gesucht?");
                    System.out.println("---------------------");
                    System.out.printf("Vorname: ");
                    input = new Scanner(System.in);
                    String Name = input.next();

                    if(bornList.suche(Name)) {
                        System.out.println("Name found");

                    }
                    for (int k = 0; k < 1; k++) {
                        System.out.println(bornList.Kontakt);
                    }

                    System.out.println("Taste drücken, um zum Menu zurückzukehren");
                    System.in.read();
                    Start.menü();
                    selection = input.nextInt();
                }
            }
        }
    }
    }
}

Is it something to do with public void setKontakt(...) or in /*add a friend method**/ ? Please help.


Solution

  • Some conventions: class is singular in general Freunde = Friends, but you have one single friend. A list is plural Kontakt = contact. And then an un-German feature: field and method names start with a small letter.

    public class Freund {
    
    private final int id;
    private String name; //Datenfeld Name
    ...
    private final List<Freund> kontakte = new ArrayList<>();
    
    
    public List<Freund> kontakte() { // Do you need this?
        return kontakte;
    }
    
     public void addKontakt(Freund kontakt) {
         kontakte.add(kontakt);
     }
    
     public Freund getKontaktById(int id) {
         return kontakte.stream().anyMatch(k -> k.id == id).orElse(null);
     }
    
     public Freund getKontaktByNamen(String vorname, String name) {
         return kontakte.stream()
                 .anyMatch(k -> k.vorname.equals(vorname) && k.name.equals(name))
                 .orElse(null);
     }
    

    One should use the concrete class ArrayList only for new. Elsewhere it pays to use the more general interface List. This way methods are more powerful, and you could change the implementation in the future.