基本上我希望它停止並打印一條消息,如果他們已經將該人員添加到ArrayList中,但它不會那樣做。爲什麼我的equals方法在這個類中不起作用?它不能正常工作
這裏的方法:
@Override
public boolean equals(Object o) {
if (this.name == ((Student)o).getName() && this.ID == ((Student)o).getID()) {
return true;
}
else {
return false;
}
}
和代碼段它在使用:
public void addStudents() {
Scanner keyboard = new Scanner(System.in);
String name = "", ID = "";
System.out.println("Welcome! Please type exit at any point to stop entering students and for the lottery to commence.\n");
System.out.print("Student name: ");
name = keyboard.nextLine();
if (!name.equals("exit")) {
System.out.print("Student ID: ");
ID = keyboard.nextLine();
}
while (!name.equals("exit") && !ID.equals("exit")) {
System.out.print("\nStudent name: ");
name = keyboard.nextLine();
if (!name.equals("exit")) {
System.out.print("Student ID: ");
ID = keyboard.nextLine();
if (!ID.equals("exit")) {
boolean contains = false;
for (int i = 0; i < students.size(); i++) {
if (students.get(i).equals((new Student(name, ID)))) {
contains = true;
}
}
if (!contains) {
students.add(new Student(name, ID));
}
else {
System.out.println("You can only enter once.");
}
}
}
}
}
我辛苦在這個很長一段時間,但不能把我的手指上爲什麼將無法工作。
請參閱[本文](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java)以獲取如何比較Java中的字符串的詳細說明。 – assylias