繁体   English   中英

如何自动增加 ID 并将 ID 添加到朋友 class

[英]How to auto increment an ID and add an ID to a friend class

我创建了两个类,称为朋友和朋友组。 我正在尝试在数组列表中添加朋友。 但我无法在他们的详细信息前添加一个 ID。 如果我在列表中添加朋友,我想添加一个自动增量 ID。 请帮助我这样做。 谢谢你。

  import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Freunde {
        
    
        private int Id;
        
        public String LastName; 
        public String FirstName; 
        public String Email; 
        public String Address; 
            
    
        public String toString() {
            return (Id+ "," +LastName+ "," +FirstName+","+Email+Adresse);
        }
        public ArrayList<String> Kontakt = new ArrayList<String>();
        public ArrayList<String> Kontakt() 
        {
            return Kontakt;
        }
        
        Iterator<String> input = Kontakt.iterator();
    
        /**************** Starting of set methods ************************/

        public void setFirstName(String firstName) {
            this.FirstName=firstName;
            }   
        public void setLastName(String lastName) {
            this.LastName=lastName;
        }
        public void setEmail(String Email) {
            this.Email=Email;
        }
        public void setAdresse(String Adresse) {
            this.Adresse=Adresse;
        }
        
        public void setKontakt (ArrayList<String> Kontakt) {
            this.Kontakt=Kontakt;
            }
    
        /****************End of set methods************************/    
        
        /****************Starting of get methods************************/
        
        public String getFirstName() {
            return FirstName;
        }
        
        public String getLastName() {
            return LastName;
        }
        public String getEmail() {
            return Email;
        }
        
        public String getAdresse() {
            return Adresse;
        }
        public ArrayList<String> getKontakt() {
            return Kontakt;
        }
        /****************End of get methods************************/
        
        public int getId() {
            return Id++;
        }
        public void setId(int id) {
            Id = id;
        }
        /****************add a friend method************************/
        public void addfriend() {   
    
        Kontakt.add(FirstName);
        Kontakt.add(LastName);
        Kontakt.add(Email);
        Kontakt.add(Adresse);
        }   
        /****************remove a friend method************************/
        public void remove(){
        Kontakt.remove(FirstName);
        Kontakt.remove(LastName);
        Kontakt.remove(Email);
        Kontakt.remove(Adresse);
        }
        /****************change a friend method************************/    
        public void change()
        {
        Kontakt.set(0, FirstName);
        Kontakt.set(1, LastName);
        Kontakt.set(5, Email);
        Kontakt.set(6, Adresse);
        }   
        /****************End of array methods************************/
    
        /**************** Durchsuche alles nach Name *********************/
    
        public void search(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));
                } else {
                    return;
                }
            }
        }
        
        
        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(int id, String firstname, String lastname, String email, String adresse)
            {
                
                setFirstName(firstname);
                setLastName(lastname);
                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;
        }
    
       
        }

在我的其他 class inode 中添加一个朋友我有类似的东西

if (selection == 2) { // Add friend
                System.out.println("Kontaktdata");
                System.out.println("---------------------");
                System.out.printf("Firstname: ");
                input = new Scanner(System.in);
                String vorname = input.next();
                System.out.printf("LastName: ");
                String name = input.next();
                System.out.printf("Email: ");
                String email = input.next();
                System.out.printf("Adresse: ");
                String adresse = input.next();

                bornList.setKontakt(id, firstname, lastname, email, adresse);    
                bornList.add(); // adds the friend to the array list
                System.out.println("back to menu");
                System.in.read();
                Start.menü();
                selection = input.nextInt();

            }

我正在尝试添加朋友

public void addfriend() { 
Kontakt.get(id); 
Kontakt.add(FirstName); 
Kontakt.add(LastName);
Kontakt.add(Email); 
Kontakt.add(Adresse); 
} 

我叫另一个 function

bornList.setKontakt(id, firstname, lastname, email, adresse); bornList.addfriend(); // 

将朋友添加到数组列表中。 但我得到一个线程错误。

但我得到 output 类似 id 0. Kontakt:0,Müller,Thomas,Telefon:016396404304,10/01/1992,01879845649thomas.mueller@xyz.de,abcdef7, 12303 Berg, Australia

抛弃 id 参数并将其替换为私有 static 字段(例如称为 nextId):

private static int nextId = 0;

由于它是一个 static 字段,它不依赖于单个 object,而是依赖于整个 class。 为了让它现在工作,在构造函数中执行以下代码:

this.id = nextId;
nextId++;

每次创建新的 Object 并将唯一的 ID 分配给每个 Object 时,这都会将 static 字段“nextId”增加一个。 如果您打算创建比 Integer class (2147483647) 的最大值更多的对象,这将导致异常。 在这种情况下,请改用 long 或 BigInteger。

PS:属性,例如“Id”应该总是以小写字母开头。 PPS:: hoffentlich trifft Thomas Müller heute! :^)

实现类似于您想要的东西的最简单方法是使用static integer 变量,该变量将用作 id 生成器。 每次创建Friend object 的新实例时,您可以简单地获取当前值并将其加一。 一个简单的例子是这样的:

public class Friend {

    private static int idCache = 0;

    private final int id;

    private String lastName;
    public String getLastName() { return lastName; }
    public void setLastName(String lastName) { this.lastName = lastName; }

    private String firstName;
    public String getFirstName() { return firstName; }
    public void setFirstName(String firstName) { this.firstName = firstName; }

    private String email;
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }

    private String address;
    public String getAddress() { return address; }
    public void setAddress(String address) { this.address = address; }

    public Friend() {
        this.id = idCache++;
    }

    @Override
    public String toString() {
    return "Friend{" +
        "id=" + id +
        ", lastName='" + lastName + '\'' +
        ", firstName='" + firstName + '\'' +
        ", email='" + email + '\'' +
        ", address='" + address + '\'' +
        '}';
    }

    public static void main(String... args) {
        for (int i = 0; i <= 10; i++) {
            Friend friend = new Friend();
            System.out.println(friend);
    }
    }

}

我希望这对你有意义并且有帮助。

暂无
暂无

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

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