gpt4 book ai didi

java - 引用嵌套类中的方法

转载 作者:行者123 更新时间:2023-12-01 17:53:57 26 4
gpt4 key购买 nike

我是一个JAVA初学者。我正在尝试创建一个java电话簿,其中包含三个主要类

  • Contacts.java
  • Phonebook.java
  • Showphonebook.java

Contacts 有两个非静态变量,namephone,它们保存一个人的姓名和电话号码。

然后,Phonebook 是一个类,它保存 Phonebook 对象,并且有一个变量 owner,它是一个字符串。基本上,Phonebook 对象拥有一个所有者,并引用 Contacts 对象来向其添加联系人。

最后一个类 Showphonebook 是创建一个带有所有者的新 Phonebook 并向其添加联系人的类。

这是我上面的代码:

Contact.java

public class Contact {
private String name;
private String phone;

public Contact(String name, String phone) {
this.name = name;
this.phone = phone;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String toString() {
return name + ": " + phone;
}
}

电话簿.java

import java.util.*;

public class Phonebook
{
private String owner;
public ArrayList<Contact> contacts = new ArrayList<Contact>();

public Phonebook(String owner) {
this.owner = owner;
}

public void addContact(Contact name) {
contacts.add(name);
}

public void show() {
System.out.println(owner + "'s phonebook");
for (Contact name : contacts) {
System.out.println(name);
}
}

/*public String findContactByName(String contactToSearch) {
for (Contact name : contacts) {
if (this.getName().equals(contactToSearch)) {

}
}
}*/

}

ShowPhonebook.java

public class ShowPhonebook
{

public static void main(String[] args) {
Phonebook phonebook1 = new Phonebook("Sam Johnson");
phonebook1.addContact(new Contact("Kelly Wong", "(02) 12345678"));
phonebook1.addContact(new Contact("Richard Jackson", "(02) 87654321"));
phonebook1.show();
}
}

我想在 Phonebook.java 中创建一个方法,它可以搜索电话簿以查看联系人是否存在,否则返回 null。

我该怎么做?我在想是否要在 Contact 中使用 getName() 方法来提取联系人 ArrayList 中每个联系人的姓名并将其与contactToSearch 变量,但由于 getName() 是非静态的,我该怎么做?我很困惑,因为 Contact 持有 getName,但要引用它,我需要一个对象,但我唯一的对象 phonebook1 位于 ShowPhonebook 类,我觉得它必须经过两个类才能到达那里。不知道该怎么做。

在这里寻求指导!

最佳答案

首先,欢迎来到 Stack Overflow!

现在我假设您是 java 新手,因此对引用和 this 在 java 中的工作方式感到困惑。为了得到你所要求的,我建议在注释方法中进行以下修改-

public String findContactByName(String contactToSearch) {
for (Contact contact : this.contacts) { // changed "name" to "contact"; variable name should be aptly chosen
if (contact.getName().equals(contactToSearch)) {
// TODO: do your thing with "contact" variable
}
}
}

this 指的是该类的当前实例。在您的情况下,this 将引用 phonebook1 实例。

关于java - 引用嵌套类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60751145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com