[英]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.