我的问题是有一个方法printPetInfoByName()在宠物列表中搜索给定名称的每个宠物,并使用toString()方法打印宠物的信息。 arraylist是Pet类型,名称是从main方法给出的(我还没编码) 我需要通过搜索arraylist来使用toString()来打印宠物的信息。如果列表中存在给定名称,则它将打印信息。
我的代码看起来像
但它会产生错误>不兼容的类型:Pet不能转换为第20行的CharSequence 如果我写的(字符串搜索:列表) 然后它给出错误,Pet不能转换为第18行的字符串
答案 0 :(得分:1)
使用以下代码为您的方法:
public void printPetInfoByName(String name) {
for (Pet search : list)
if (search.getName().contains(name))
search.toString(); //System.out.println(search.toString());
}
在抽象类 Pet 中定义toString方法。
答案 1 :(得分:0)
String.contains
检查字符串中是否存在子字符串。它需要一个CharSequence作为参数,你现在给它一个Pet。这就是你得到错误的原因。
我假设您的宠物上有某种名称字段,您可以使用get方法访问它?不要检查字符串是否包含宠物,而是考虑询问宠物的名字是否等于搜索字符串。
我认为你应该先按照自己的方式工作。但是,如果您感兴趣,使用集合时,java 8流是一个很好的工具。以下是使用它们解决问题的方法:
list.stream()
.filter(p -> p.getName().equals(name))
.forEach(System.out::println);
list.stream()
“启动”流。
filter
过滤所有元素p,其中p的名称等于您作为参数传递的名称。
forEach
为流中的所有元素执行某些操作。请注意,通过过滤它,剩余的元素是我们想要的。
答案 2 :(得分:0)
字符串无法与复杂对象进行比较。它们的类型不同,因此您的程序不知道如何使用它。