出于某种原因,在我的Pseudo数据库中,我的删除方法似乎完全无效并且无法正常工作。源代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class Lab2 {
static ArrayList<Person> peopleDirectory = new ArrayList<Person>(10);
public static void main(String[] args) {
// TODO Auto-generated method stub
int choice;
Scanner userInput = new Scanner(System.in);
do {
System.out.println("Welcome to the people directory please make a choice from the list below:");
System.out.println("-------------------------------------------------------------------------");
System.out.println("1. Add a person to the directory.");
System.out.println("2. Remove a Person from the directory.");
System.out.println("3. View the User Directory.");
System.out.println("4. Exit the directory.");
choice = userInput.nextInt();
switch(choice) {
case 1:
addPerson(new Person());
break;
case 2: removePerson(new Person());
break;
case 3: displayPeople();
break;
case 4: System.out.println("Thanks for using the people diretory!");
System.exit(0);
break;
default: System.out.println("Invalid choice! Please select a valid choice!");
break;
}
} while (choice != 4);
}
public static void addPerson(Person thePerson) {
String firstName;
String lastName;
String phoneNumber;
int age;
if (peopleDirectory.size() >= 10) {
System.out.println("Sorry the list can not be larger than 10 people");
} else {
int i = 0;
Scanner input = new Scanner(System.in);
System.out.println("Enter the first name of the Person you would like to add: ");
firstName = input.nextLine();
thePerson.setFirstName(firstName);
System.out.println("Enter the last name of the Person you would like to add: ");
lastName = input.nextLine();
thePerson.setLastName(lastName);
System.out.println("Enter the phone number of the Person you would like to add: ");
phoneNumber = input.nextLine();
thePerson.setPhoneNumber(phoneNumber);
System.out.println("Enter the age of the Person you would like to add: ");
age = input.nextInt();
thePerson.setAge(age);
peopleDirectory.add(i, thePerson);
i++;
}
}
public static void removePerson(Person thePerson) {
if (peopleDirectory.size() < 1) {
System.out.println("There is absolutely nothing to remove from the Directory");
}
else {
Scanner input = new Scanner(System.in);
System.out.println("Please enter the first name of the person you would like to delete: ");
String firstName = input.nextLine();
thePerson.setFirstName(firstName);
System.out.println("Enter the last name of the Person you would like to remove: ");
String lastName = input.nextLine();
thePerson.setLastName(lastName);
System.out.println("Enter the phone number of the Person you would like to remove: ");
String phoneNumber = input.nextLine();
thePerson.setPhoneNumber(phoneNumber);
System.out.println("Enter the age of the Person you would like to remove: ");
int age = input.nextInt();
thePerson.setAge(age);
for (int i = 0; i < peopleDirectory.size(); i++) {
if (peopleDirectory.get(i).equals(thePerson)) {
peopleDirectory.remove(thePerson);
}
}
}
}
public static void displayPeople() {
for (Person person : peopleDirectory) {
System.out.println("First Name: " + person.getFirstName() + " Last name: " +
person.getLastName() + " Phone number: " + person.getPhoneNumber() +
" Age: " + person.getAge());
}
}
}
class Person {
private String firstName;
private String lastName;
private int age;
private String phoneNumber;
public Person (String firstName, String lastName, int personAge, String phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.age = personAge;
this.phoneNumber = phoneNumber;
}
public Person() {
this.firstName = "";
this.lastName = "";
this.age = 0;
this.phoneNumber = "";
}
public int getAge() {
return this.age;
}
public String getFirstName() {
return this.firstName;
}
public String getLastName() {
return this.lastName;
}
public String getPhoneNumber() {
return this.phoneNumber;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(int age) {
this.age = age;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
当我尝试从ArrayList中删除一个元素时,它仍然保留在arrayList中。我不明白为什么,但我觉得我的删除方法有点笨重。
例如,我添加一个元素并尝试将其删除(参见下面的输出):
Welcome to the people directory please make a choice from the list below:
-------------------------------------------------------------------------
1. Add a person to the directory.
2. Remove a Person from the directory.
3. View the User Directory.
4. Exit the directory.
1
Enter the first name of the Person you would like to add:
Tom
Enter the last name of the Person you would like to add:
Jones
Enter the phone number of the Person you would like to add:
6073388152
Enter the age of the Person you would like to add:
24
Welcome to the people directory please make a choice from the list below:
-------------------------------------------------------------------------
1. Add a person to the directory.
2. Remove a Person from the directory.
3. View the User Directory.
4. Exit the directory.
3
First Name: Tom Last name: Jones Phone number: 6073388152 Age: 24
Welcome to the people directory please make a choice from the list below:
-------------------------------------------------------------------------
1. Add a person to the directory.
2. Remove a Person from the directory.
3. View the User Directory.
4. Exit the directory.
2
Please enter the first name of the person you would like to delete:
Tom
Enter the last name of the Person you would like to remove:
Jones
Enter the phone number of the Person you would like to remove:
6073388152
Enter the age of the Person you would like to remove:
24
Welcome to the people directory please make a choice from the list below:
-------------------------------------------------------------------------
1. Add a person to the directory.
2. Remove a Person from the directory.
3. View the User Directory.
4. Exit the directory.
3
First Name: Tom Last name: Jones Phone number: 6073388152 Age: 24
Welcome to the people directory please make a choice from the list below:
-------------------------------------------------------------------------
1. Add a person to the directory.
2. Remove a Person from the directory.
3. View the User Directory.
4. Exit the directory.
我在这里做错了什么?
答案 0 :(得分:0)
如果你想比较对象应该有这样的东西,请在这里完成答案here !
public boolean equals(Object object2) {
return object2 instanceof MyClass && a.equals(((MyClass)object2).a);
}
或者可以比较其对象的任何特定字段,例如
if(peopleDirectory.get(i).getFirstName().equals(thePerson.getFirstName()))
*无需发送参数新的Person()可以使用单个对象类级别,只有当您想要执行某些操作时才使用其setter修改其属性
如果您可以使用例如*
,也可以声明尽可能多的Scanner对象static Scanner userInput = new Scanner(System.in);
使用单个对象可能是
static Person person = new Person();//declaration
及其方法在请求数据输入时添加或删除setteas创建的对象属性,并且比较也基于该对象执行
System.out.println("Enter the first name of the Person you would like to add: ");
person.setFirstName(userInput.nextLine());//data entry and setteo
if (peopleDirectory.get(i).equals(person)) // comparation