好的,所以我有一个正在创建的迷你程序,称为手机。它具有3个类:Main.java,Contact.java和MobilePhone.java。
Main.java使用扫描仪执行静态方法,以通过电话菜单显示和返回信息。 Contact.java是一个简单的类,用于存储姓名和电话号码。 MobilePhone.java具有一个ArrayList,它将Contact类中的对象存储为联系人,然后具有诸如addContact()的几种方法。移除联系人(); queryContact(); ModifyContact();等等...
我遇到的问题是我正在Main.java中运行这些静态方法,其中一些调用MobilePhone.java中的公共非静态方法,而它们似乎并未执行这些方法中的所有代码。这是一个例子:
在Main.java中,我有一个名为addContact()的方法;看起来像这样:
注意mobilePhone(区分大小写)是新MobilePhone类的名称。
private static void addContact(){
System.out.println("Enter name: ");
String name = scanner.nextLine();
System.out.println("Enter number: ");
String number = scanner.nextLine();
Contact newContact = Contact.createContact(name, number);
mobilePhone.addContact(newContact);
}
mobilePhone.addContact();看起来像这样:
public void addContact(Contact contact){
for(int i = 0; i < this.contacts.size(); i++){
if(this.contacts.get(i).equals(contact)){
System.out.println("Contact already exists.");
} else {
this.contacts.add(contact);
System.out.println("New contact: " + contact.getName() + " - "
+ contact.getNumber() + " added.");
}
}
}
发生的情况是扫描程序正在从Main.addContact();输入;但当到达该行时,mobilePhone.addContact(newContact);它似乎并没有在该函数中执行任何操作。似乎是这样,因为无论如何都不会从任何System.out.println()打印任何内容。
我还有一个函数可以打印ArrayList中的所有对象,称为printContacts();。而且它也不在打印:
public void printContacts() {
System.out.println("Contacts List: ");
for(int i = 0; i < contacts.size(); i++){
System.out.println("#" + (i+1) +". " + this.contacts.get(i).getName()
+ " - " + this.contacts.get(i).getNumber());
}
}
我不知道是什么问题。我没有收到错误,只是没有得到我想要的返回信息。
最佳答案
在MobilePhone.addContact()
中,您具有用于在for
循环内添加联系人的代码-因此,每当已经存在的另一个联系人不相等时,便添加该联系人。
开始时,没有联系人(我认为),因此它不会添加联系人...从不。因此,无法添加任何联系人。您观察到的所有其他问题可能是这种情况的结果-例如如果您无法添加任何内容,则永远不会打印任何内容。
固定:
public void addContact(Contact contact){
for(int i = 0; i < this.contacts.size(); i++){
if(this.contacts.get(i).equals(contact)){
System.out.println("Contact already exists.");
return;
}
}
this.contacts.add(contact);
System.out.println("New contact: " + contact.getName() + " - "
+ contact.getNumber() + " added.");
}