2 回答
TA贡献1825条经验 获得超6个赞
解释
你写了
if (Input.equals(list)) { ... }与Input是String和list一个ArrayList。但是,String#equals(documentation)方法比较两个Strings是否具有相同的字符(如"hello".equals("hello")),而不是比较参数列表是否包含您在其上调用了该方法的元素。引用其文档:
将此字符串与指定对象进行比较。结果是,
true当且仅当参数不是,null并且是一个String表示与此对象相同字符序列的对象。
解决方案
您实际要使用的是List#contains(文档):
返回
true此列表是否包含指定的元素。更正式地讲,true当且仅当此列表包含至少一个e诸如此类的元素时,才返回Objects.equals(o, e)。
因此,代码可能如下所示:
if (list.contains(Input)) { ... }命名约定
请注意命名约定。变量名称应始终位于camelCase中,input而不是Input。方法名称相同。
仅类名称用PascalCase编写。常量(static final)用大写SNAKE_CASE编写。
TA贡献1805条经验 获得超10个赞
如果要检查确实List<T>包含T item您应该yourList.contains(T item)在代码中使用的代码,则使用的item.equals(object)是完全不同的代码。简而言之,equals()它检查两个对象是否都存储在相同的内存地址中。尽管对于某些默认类,此方法将被覆盖并以不同的方式起作用,但Stringclass是一个很好的例子。
添加回答
举报
