Ich versuche, eine grundlegende Handy-Anwendung zu erstellen. Ich versuche (aber scheiterte), eine Funktion zu implementieren, um vorhandene Kontakte auf dem Telefon abzufragen. Ich habe dies getan, indem ich eine Methode erstellt habe, die ein ArrayList
Objekt zurückgibt, das Kontakte enthält. Dies soll funktionieren, indem Sie suchen (mit einer for
Schleife), um zu sehen, ob ein bestimmter Kontakt existiert, und es zu der ArrayList
hinzufügen, falls dies der Fall ist. Danach sollte die Methode ein ArrayList
-Objekt zurückgeben, das nur die Ergebnisse der Abfrage enthält. Wenn ich jedoch meinen Code teste, stelle ich fest, dass JEDER Kontakt zur ArrayList
hinzugefügt wird, unabhängig davon, ob er mit der Abfrage übereinstimmt oder nicht. Hier sind einige Auszüge aus meinen Code:Hinzufügen von eindeutigen Objekten zu ArrayList
Phone.java
private ArrayList<Contact> contacts;
public Phone() {
this.contacts = new ArrayList<>();
}
public ArrayList<Contact> queryContacts(String contactName) {
ArrayList<Contact> contactsList = new ArrayList<>();
for (Contact contact : this.contacts) {
if (this.findContact(contactName))
contactsList.add(contact);
}
return contactsList;
}
private boolean findContact(String contactName) {
for (Contact contact : this.contacts) {
if (contact.getName().equals(contactName))
return true;
}
return false;
}
meinen Code testen (Main.java)
public static void main(String[] args) {
char c= 'A';
for (int i = 0; i < 10; i++) {
//Create contacts with unique data
phone.addContact(Contact.createContact("Contact"+c++, "07"+i));
}
System.out.println(phone.queryContacts("VoidContact")); //Dubious entry
System.out.println(phone.queryContacts("ContactB")); //This entry exists
}
Rechtmäßig so erhalte ich keine Ausgabe auf Berufung die phone.queryContacts()
Methode mit dem "VoidContact" Parameter. Doch bei ihm mit dem legitimen Parameter „Kontakt B“, anstatt nur empfangen nur einen Ansprechpartner aufrufen, erhalte ich die folgende Ausgabe (bitte beachten Sie, dass ich Object.toString()
in meiner Contact
Klasse overrided haben):
Name: 'ContactA' Number: 070
Name: 'ContactB' Number: 071
Name: 'ContactC' Number: 072
Name: 'ContactD' Number: 073
Name: 'ContactE' Number: 074
Name: 'ContactF' Number: 075
Name: 'ContactG' Number: 076
Name: 'ContactH' Number: 077
Name: 'ContactI' Number: 078
Name: 'ContactJ' Number: 079
Meine Frage; Warum wird jeder Kontakt im Gegensatz zu den eindeutigen Kontakten basierend auf den eingegebenen Parametern ausgegeben? Vielen Dank im Voraus für Ihre Antwort.
außer Kraft setzen Haben Sie auf dem Laufenden genau den Code, den Sie versuchen? Es scheint nicht, denn in dem, was Sie gepostet haben, wurde 'contactsList' nie definiert, wenn 'contactsList.add (contact)' ausgeführt wird.Also das sollte nicht erfolgreich kompilieren –
@VicSeedoubleyew Weiß nicht, wie ich das verpasst habe. Ich habe den fehlenden Code hinzugefügt. Danke –
Sie sind herzlich willkommen :) –