Java 从嵌套的类中引用方法
我是JAVA初学者。 我正在尝试创建一个java电话簿,它包含三个主要类Java 从嵌套的类中引用方法,java,Java,我是JAVA初学者。 我正在尝试创建一个java电话簿,它包含三个主要类 Contacts.java Phonebook.java Showphonebook.java 联系人有两个非静态变量,姓名和电话,用于保存一个人的姓名和电话号码 然后,Phonebook是一个类,它包含Phonebook对象,并且有一个变量owner,它是一个字符串。因此,基本上,Phonebook对象拥有一个所有者,并引用Contacts对象向其添加联系人 然后,最后一个类Showphonebook是一个类,它与o
Contacts.java
Phonebook.java
Showphonebook.java
联系人
有两个非静态变量,姓名
和电话
,用于保存一个人的姓名和电话号码
然后,Phonebook
是一个类,它包含Phonebook
对象,并且有一个变量owner
,它是一个字符串。因此,基本上,Phonebook
对象拥有一个所有者,并引用Contacts
对象向其添加联系人
然后,最后一个类Showphonebook
是一个类,它与owner一起创建一个新的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;
}
}
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)) {
}
}
}*/
}
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
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;
}
}
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)) {
}
}
}*/
}
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()
方法来提取contactsArrayList
中每个联系人的姓名,并将其与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
}
}
}
此
引用类的当前实例。在您的情况下,此
将引用phonebook1
实例。如果(this.getName().equals(contactToSearch)){
=>此
没有.getName()
。您希望对名称
变量执行此操作。这就是您使用foreach的原因。“[…]如果存在我搜索的人员,则返回null。“当找到时,它应该返回什么?只要返回一个布尔值,让它是真的或假的,取决于存在。FY:请考虑花一些时间来研究静态是什么。你似乎不太理解它。我的建议:我相信类SunPooBooes还不需要。搜索能力可以直接进入P。电子书。