![](/img/trans.png)
[英]Cannot invoke isEqualTo(boolean) on the primitive type boolean
[英]Cannot invoke equals(boolean) on the primitive type boolean
我想檢查字符串的前兩個字符是否相等,所以我寫的條件如下
if (str.length() >= 4
&& ((str.startsWith(str.substring(0, 2))).equals(str.endsWith(str
.substring(str.length() - 3, str.length() - 1)))))
但由於無法在原始類型boolean上調用equals(boolean)而出現錯誤
那么根本原因是什么?
由於即將出現錯誤,因為:str.startsWith()返回boolean
值,並且我們使用Boolean調用equals()
使用此表達式進行比較:
str.substring(0, 2).equals(str.substring(str.length() - 3, str.length() - 1))
我想檢查字符串的前兩個字符是否相等
那不是你在做什么。 您正在使用startsWith
和endsWith
–您要詢問字符串是否以其自己的前兩個字符開頭,以及它是否以字符串的結尾附近部分結尾,然后嘗試比較這些比較的結果...除了您嘗試將兩個boolean
值與equals
而不是==
進行比較之外,這也不起作用。
您只想在此使用substring
並equals
-但您的substring
也不正確,因為在查找最后兩個字符時會有一個錯誤的錯誤。 為了簡單起見,我個人將其拆分:
if (str.length() > 4) {
String start = str.substring(0, 2);
// If you don't specify an end point, it'll be "the rest of the string"
// which is what you want.
String end = str.substring(str.length() - 2);
if (start.equals(end)) {
...
}
}
startswith api將返回一個布爾值,因此編譯器正在編譯您試圖將String與boolean進行比較。 相反,您可以執行以下操作:
if (str.endsWith(str.substring(0, 2))) {
//ye it does ends with same string as it starts with
}
startsWith(String)
方法返回一個布爾值,該布爾值指示是否有效地對其應用的字符串以string參數開頭。 為了比較前兩個字符和后兩個字符,您的布爾條件可以是:
if(str.length() >= 4 && str.startsWith(str.substring(str.length - 3, str.length()))
請注意子字符串方法中的索引,因為最后一個參數指示不包括在子字符串中的第一個字符的位置。 結果相同,但使用endsWith(String)
方法:
if(str.length() >= 4 && str.endsWith(str.substring(0, 3)))
或僅使用sunbstring(int, int)
方法:
if(str.length() >= 4
&& str.substring(0, 3).equals(str.substring(str.length() - 3, str.length())))
您的問題源於
((str.startsWith(str.substring(0, 2))).equals(str.endsWith(str
.substring(str.length() - 3, str.length() - 1))))
這基本上歸結為boolean.equals(...)
,因為boolean
不是Object
,所以無法完成
例如,您可以使用String#startsWith
和String#endsWith
...
if (str.length() >= 4 &&
str.endsWith(str.substring(0, 2)) &&
str.startsWith(str.substring(str.length() - 2))) {
甚至
if (str.length() >= 4 &&
str.substring(0, 2).equals(str.substring(str.length() - 2))) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.