Я новичок в Java и хочу написать код, который создает объекты, отображает (печатает) и редактирует их.
Я написал класс:
public class Person {
protected String firstName; protected String lastName; protected String fullName; protected Date dob; protected int id; public Person(String firstName, String lastName, Date dob, int id) { this.firstName = firstName; this.lastName = lastName; this.dob = dob; this.fullName = this.firstName + " " + this.lastName; this.id = id; } public String getFirstName() {return this.firstName;} public String getLastName() {return this.lastName;} public String getFullName() { return this.fullName; } public Date getDob() { return this.dob; } public int getId() { return this.id; } public void printAll() { System.out.println(this.fullName); System.out.println(this.dob); System.out.println(this.id); } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public void setDob(Date dob) { this.dob = dob; } public boolean containsFullName(String fullName) { if (this.fullName.equalsIgnoreCase(fullName)) { return true; } else { return false; } } public boolean containsId(int id) { if (this.id == id) { return true; } else { return false; } }
}
Я создал массив людей в основном классе. (100 объектов).
public class Main {
final static int MAX_NUMBER_PERSONS = 100;
static Person[] person = new Person[MAX_NUMBER_PERSONS];
static int mainCount = 0;
static Scanner scan = new Scanner(System.in);
по соответствующей команде пользователь может создать объект в этом массиве (это немецкий язык, но в основном это его имя, фамилия и дата рождения). mainCount используется для отслеживания, в какой позиции в массиве создается объект:
public static void createPerson () выбрасывает ParseException {
Scanner scan = new Scanner(System.in); // Namen erfassen: System.out.println("Bitte den Vornamen der Person eingeben:"); String firstName = scan.nextLine(); System.out.println("Bitte den Nachnamen der Person eingeben:"); String lastName = scan.nextLine(); String fullName = firstName + " " + lastName; // DOB erfassen: System.out.println("Bitte Geburtsdatum von " + fullName + " eingeben (TT/MM/JJJJ):"); String dob = scan.next(); Date dobDate = new SimpleDateFormat("dd/MM/yyyy").parse(dob); int id = mainCount; person[mainCount] = new Person(firstName, lastName, dobDate, id); ++mainCount; System.out.println("Du hast Person Nummer " + mainCount + " erstellt");
}
ТЕПЕРЬ АКТУАЛЬНАЯ ПРОБЛЕМА: вызывая следующий метод, пользователь должен иметь возможность редактировать желаемый объект в массиве, используя пользовательский ввод и установщики:
public static void editPerson () выбрасывает ParseException {Scanner scan = new Scanner (System.in); System.out.println ("Bitte die ID der zu bearbeitenden Person eingeben (zu finden über) ..."); int id = scan.nextInt (); scan.nextLine (); searchByIdReturn (идентификатор) .printAll ();
System.out.println("Diese Person bearbeiten? Tippe <ja>, sonst zurück zum Menü."); if(scan.next().equalsIgnoreCase("ja")) { scan.nextLine(); System.out.println("Vorname eingeben..."); String firstName = scan.nextLine(); searchByIdReturn(id).setFirstName(firstName); System.out.println("Nachname eingeben..."); String lastName = scan.nextLine(); searchByIdReturn(id).setLastName(lastName); System.out.println("Bitte Geburtsdatum eingeben (TT/MM/JJJJ):"); String dob = scan.next(); Date dobDate = new SimpleDateFormat("dd/MM/yyyy").parse(dob); searchByIdReturn(id).setDob(dobDate); }
}
После метода я ищу объект. Имя и фамилия остаются без изменений. dob, однако, был изменен по мере необходимости.
Что мне не хватает?
Большое вам спасибо в andvance!
Date
был вытеснен несколько лет назад классами java.time. Для ваших целей используйтеLocalDate
. - person Basil Bourque   schedule 14.05.2020