Мой код находится в пакете и разделен на два отдельных файла .java. Он печатает список опций для сортировки ArrayList, который пользователь может выбрать, введя правильный номер. Однако по какой-то причине он не распечатывает отсортированный список после ввода, ну что угодно. Может ли кто-нибудь помочь?Не удается завершить программу сортировки Java ArrayList, которая запрашивает у пользователя, как сортировать ArrayList
Вот мой пользовательский класс Object, Contact.java:
package Sorter;
import java.util.Comparator;
public class Contact {
private String firstName;
private String lastName;
private String state;
private Integer age;
public Contact(String firstName, String lastName, String state, Integer age) {
this.firstName = firstName;
this.lastName = lastName;
this.state = state;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Integer getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static Comparator<Contact> lastNameComparator = new Comparator<Contact>() {
public int compare(Contact s1, Contact s2) {
String contactLastName1 = s1.getLastName().toUpperCase();
String contactLastName2 = s2.getLastName().toUpperCase();
return contactLastName1.compareTo(contactLastName2);
}
};
public static Comparator<Contact> stateComparator = new Comparator<Contact>() {
public int compare(Contact s1, Contact s2) {
String state1 = s1.getState().toUpperCase();
String state2 = s2.getState().toUpperCase();
return state1.compareTo(state2);
}
};
public static Comparator<Contact> ageComparator = new Comparator<Contact>() {
public int compare(Contact s1, Contact s2) {
int age1 = s1.getAge();
int age2 = s2.getAge();
return age1 - age2;
}
};
@Override
public String toString() {
return ("First Name: " + firstName + ", Last Name: " + lastName + ", State: " + state + ", Age: " + age);
}
}
А вот мой Sort.java: пакет сортировщик;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class TestSortOptions {
public static void main(String[] args) {
ArrayList<Contact> contacts = initializeContactsArray();
promptForOption(contacts);
}
private static ArrayList<Contact> initializeContactsArray() {
ArrayList<Contact> contacts = new ArrayList<Contact>();
contacts.add(new Contact("Joe", "Jones", "IL", 35));
contacts.add(new Contact("Bill", "Barnes", "OH", 62));
contacts.add(new Contact("Ida", "Know", "FL", 23));
contacts.add(new Contact("Adam", "Ant", "MI", 14));
contacts.add(new Contact("Jane", "Doe", "CA", 41));
return contacts;
}
private static void promptForOption(ArrayList<Contact> contacts) {
Scanner input = new Scanner(System.in);
System.out.println("Options \nSort by Last Name: [1] " + "\nSort by Home State: [2] "
+ "\nSort by Age: [3] " + "\nExit Application: [0] " + "\n\nPlease enter your choice: ");
String answer = input.next();
if (answer == "1") {
Collections.sort(contacts, Contact.lastNameComparator);
for (Contact contact : contacts) {
System.out.println(contact);
}
if (answer == "2") {
Collections.sort(contacts, Contact.stateComparator);
for (Contact contact : contacts) {
System.out.println(contact);
}
if (answer == "3") {
Collections.sort(contacts, Contact.ageComparator);
for (Contact contact : contacts) {
System.out.println(contact);
}
if (answer == "0") {
System.exit(0);
}
else {
System.out.println("Invalid Entry");
}
}
}
}
}
}
Добро пожаловать в переполнение стека! Похоже, вам нужно научиться использовать отладчик. Пожалуйста, помогите нам с некоторыми [дополнительными методами отладки] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Если у вас все еще есть проблемы после этого, пожалуйста, не забудьте вернуться с более подробной информацией. –
'if (answer ==" 1 ") {' - Помните, что вы не можете использовать '==' для строк. Вам нужно использовать '.equals()'. –
@DM спасибо, что указали это; Я сделал ошибку новобранец, думая, что все наоборот. Очень полезно! – IwataFan