我试图从方法getNumbers(包含字符串)中返回一个arraylist
public ArrayList<String> getNumbers(){
return (numeros);
}
然后使用搜索器我试图比较变量m(包含要查找的所需信息)和返回的列表。
public class NumberSearcher {
Reader reader = new KeyboardReader();
public NumberSearcher(ArrayList<Contacto> contactos){
String m = reader.read();
for(int i = 0; i<contactos.size();i++){
if(contactos.get(i).getPhoneNumbers().contains(m)){
contactos.get(i).display();
}
}
}
}
我已经成功使用这种相同的样式创建了一个搜索器,但仅在使用仅返回String的方法时。
问题是它不起作用。如果有匹配则应显示联系信息,但似乎没有正确“比较”,因为没有任何反应。
答案 0 :(得分:1)
很难理解你在这里问的问题。你的getNumbers方法没有从第二个代码块调用,所以我不知道它与任何东西有什么关系。它还不清楚你的意思是什么问题。您能否尝试向我们提供有关出错的更详细说明?
无论如何,我会在这里给你一些一般的建议,但是如果不知道这个问题就很难说这会有多大帮助。
首先,几乎总是建议将方法的返回类型作为List接口,而不是特定的实现(ArrayList等)。您可以在方法中指定返回类型,但这样他们客户端不需要知道底层数据结构是什么,并且您对未来的数据结构更改也很灵活。
public List<String> getNumbers(){
return (numeros);
}
其次,我可能会更改名称&#39; getNumbers&#39;更精确的东西 - 如果我看到一个&#39; getNumbers&#39;方法我希望它返回一些数字实体,而不是字符串列表。如果他们是电话号码,那么明确称之为“getPhoneNumbers&#39;。
”虽然我不完全确定我明白你的要求,但我认为这可以解决你的问题:
for(int i = 0; i < contactos.size(); i++) {
Contacto next = contactos.get(i);
if(next.getEmails().contains(m)) {
next.display();
}
}
作为事后的想法,你有没有具体的理由只检查字符串收容?我建议您检查不区分大小写的相等性,除非您确实想要找出包含元素的字符串。
答案 1 :(得分:0)
这是你在找什么?
public class EmailSearcher {
Reader reader = new KeyboardReader();
public EmailSearcher(ArrayList<Contacto> contactos){
while(reader.read() != 'keyThatTerminates') {
String m = reader.read();
for(int i = 0; i<contactos.size();i++){
var row = contactos.get(i);
if(row.getEmails().contains(m)){
row.display();
}
}
}
}
}