2014-10-07 75 views
-2

我試圖將字符串轉換爲字符數組,這樣我可以通過焦炭在其搜索字符:錯誤轉換字符串的字符數組

char[] arr = new char[str.length()]; 
for (i = 0; i < str.length(); i++) { 
    arr[i] = str.charAt(i); 
} 
do { 
    // Something 
} while (arr[i] != " "); 

但最後一行給出了這樣的錯誤在Eclipse:

數不兼容類型的字符和字符串

即使當我使用方法toCharArray,錯誤仍然存​​在。有人可以向我解釋爲什麼?

+1

我想你應該看看正則表達式和String.split,如果你想逐字分析一個字符串。 – 2014-10-07 15:41:04

+0

'toCharArray' *將*工作,但您目前正在比較一個字符串值(不是字符)。 (arr [i]!='')把你最後一行改爲'};'你應該飛行! – jbutler483 2014-10-07 15:43:29

+0

我無法看到如何轉換爲'char []'將幫助您逐字搜索。 'String'有很多方法可以很容易地處理字符序列 - 'indexOf','substring',和已經提到的'split'和正則表達式,你不能在'char []上使用' 。 – ajb 2014-10-07 15:43:58

回答

7

" "是一個字符串,而charAt返回原始類型char。您無法將這兩種類型與==進行比較。相反,使用char代表空間,所以你最終會得到char == char,它工作正常。使用

while(arr[i]!=' '); 

while(!Character.isSpaceChar(arr[i])); 
+0

我編輯你的答案有點添加一些澄清。希望你不要介意。 – Pshemo 2014-10-07 15:45:42

+0

您可以添加此作爲一個選項。而(!Character.isSpaceChar(ARR [1])) – StackFlowed 2014-10-07 15:47:21

+0

@wrongAnswer做到了 – ControlAltDel 2014-10-07 15:52:46

0

你應該使用:

while(arr[i] != ' ') // Single quotation marks. 
{ 
    // Code 
} 

OR

while(!Character.isSpaceChar(arr[i])) { 

    // Code 
} 

JavaPHP
Java中的單引號只能嚴格限定一個字符。儘管雙引號嚴格用於表示字符串。

+0

你在第二個例子中忘了否定(OP要檢查字符*是不是空格)。 – Pshemo 2014-10-07 16:23:00

+0

oops。抱歉。編輯。 – 2014-10-07 16:52:51