2015-07-28 65 views
4

我嘗試使用contains方法來查找字符是否在字符串中? 我得到的錯誤:當發現一個字符是否在字符串中或發生錯誤時

方法包含在類字符串如果(str.contains(CH)) 需要不能被應用到給定的類型的 :CharSequence中 發現的:char

代碼:

str1=rs.getString(1); 
int len=str1.length(); 
while(i<len) 
{ 
char ch=str1.charAt(i); 
if (str.contains(ch)) 
continue; 
else 
str=str+str1.charAt(i); 
i++; 
} 
+1

'String'被定義爲使用接口CharSequence的對象。 'char'是一個原始的數據類型,不能使用接口CharSequence。這會導致你傷害'String#contains'方法簽名。 – SomeJavaGuy

回答

3

if (str.indexOf(ch) != -1)應該工作。

String.contains只接受CharSequence,但一個字符不是CharSequence。上面的方法也適用於角色。另一種方式,其他人已經張貼(但我想解釋多一點點),將通過創建一個字符串,使您的單個字符成的CharSequence,例如...

String x = "" + b; // implicit conversion 
String y = Character.valueOf(ch).toString(); // explicit conversion 
2

這是因爲對於charString沒有任何超載的方法。
使用String.contains()方法CharSequence像 -

String ch = "b"; 
str.contains(ch); 

她的CharSequenceinterface。 A CharSequence是一個可讀的char值序列。該接口爲許多不同類型的字符序列提供統一的只讀訪問。
在JDK處的所有已知的實施方式是:CharSequence是 - CharBuffer,SegmentString,StringBuffer,StringBuilder

0

以下爲java.lang.String.contains()方法聲明

public boolean contains(CharSequence s) 

所以,你必須把它傳遞給函數

Character ch = 'c'; 
str.contains(ch.toString());//converts ch to string and passes to the function 

str.contains(ch+"");//converts ch to string and passes to the function 

之前轉換的字符字符串正確的代碼

str1=rs.getString(1); 
    int len=str1.length(); 
    while(i<len) 
    { 
    char ch=str1.charAt(i); 
    if (str.contains(ch+""))//changed line 
    continue; 
    else 
    str=str+str1.charAt(i); 
    i++; 
    } 
+0

這在某種程度上是醜陋的。我寧願ch.toString(),而不是那個隱式轉換。 –

+0

@FlorianSchaetz主要o/p可能使用「char」而不是「Character」。 –

相關問題