2 回答

TA贡献1825条经验 获得超6个赞
解释
你写了
if (Input.equals(list)) { ... }
与Input
是String
和list
一个ArrayList
。但是,String#equals
(documentation)方法比较两个String
s是否具有相同的字符(如"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()
它检查两个对象是否都存储在相同的内存地址中。尽管对于某些默认类,此方法将被覆盖并以不同的方式起作用,但String
class是一个很好的例子。
添加回答
举报