2014-10-07 70 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