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是一個很好的例子。
添加回答
舉報