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