我有一个名为theDirectory的数组,它包含许多DirectoryEntry,每个都包含一个名称和一个telno。 我正在努力的任务是在一个单独的ArrayPhoneDirectory文件中创建一个方法,名为lookUpEntry,它接受参数(String name),并搜索数组,找到包含该名称的DirectoryEntry,然后返回与之关联的telno它,使用DirectoryEntry.java中声明的getNumber方法。
public class DirectoryEntry {
String name;
String telno;
public DirectoryEntry(String name, String telno)
{
this.name = name;
this.telno = telno;
}
public String getName()
{
return name;
}
public String getNumber()
{
return telno;
}
public void setNumber(String telno)
{
this.telno = telno;
}
public String toString()
{
return getClass().getName() + " Name: " + this.name +
" Number: " + this.telno;
}
public String format()
{
return String.format("%-20s %-20s", name, telno);
}
}
这是我到目前为止所做的,但是我认为我可能会走错路,所以任何帮助都会受到高度赞赏。
public String lookUpEntry(String name)
{
if (Arrays.asList(theDirectory).contains(name))
{
return theDirectory.getNumber;
}
else
{
return null;
}
}
感谢。
答案 0 :(得分:0)
为什么你需要一个数组.. ??使用HashMap存储名称和数字对象,如
Map<String, String> entries = new HashMap<>();
entries.put("contact1", "121212");
entries.put("contact2", "22222");
当您需要搜索联系人时,请使用方法
entries.get("contact2")
答案 1 :(得分:0)
您是否需要将它们放在两个不同的类中。将它们保持在一起会稍微容易些。 否则,我不会真正看到您的代码存在问题,除非我没有看到数组的位置或您引用其他类的位置。 但是你走的是正确的道路。不是最优化的方式,但它会def。工作。 通过编码,总有很多方法可以做。没有一个正确的方法。
答案 2 :(得分:0)
试试这个,
public String lookUpEntry(String name)
{
List<DirectoryEntry> dirList=Arrays.asList(theDirectory);
int i=0;
for( i=0;i<dirList.size();i++){
if(dirList.get(i).getName().equals(name)){
return dirList.get(i).getNumber;
}
}
return null;
}
答案 3 :(得分:0)
这是一个更简单(更高效*)的版本。
public String lookUpEntry(String name){
for(DirectoryEntry e : theDirectory)
if(e.getName().equals(name))
return e.getNumber();
return null; //Could not find name
}
*在我看来,在阵列上使用for each循环更快,也更容易阅读。