【问题标题】:Error converting String to Char array将 String 转换为 Char 数组时出错
【发布时间】:2014-10-07 15:33:20
【问题描述】:

我正在尝试将 String 转换为 char 数组,以便可以在其中按字符搜索:

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

但最后一行在 Eclipse 中给出了这个错误:

不兼容的操作数类型 Char 和 String

即使我使用方法toCharArray,错误仍然存​​在。谁能给我解释一下为什么?

【问题讨论】:

  • 如果你想逐字分析字符串,我认为你应该看看正则表达式和 String.split。
  • toCharArray 工作,但您目前正在考虑比较字符串值(不是字符)。只需将您的最后一行更改为}while(arr[i]!=' ');,您就可以起飞了!
  • 我看不出转换为char[] 将如何帮助您逐字搜索。 String 有很多方法可以轻松处理字符序列——indexOfsubstring,以及已经提到的 split 和正则表达式,您不能在 char[] 上使用。
  • 你正在比较 char arr[i] 和字符串 " ",使用单引号
  • @MurtazaZaidi 在您发表评论时使用“反引号”(反引号)字符,围绕看起来像代码的内容,将有助于避免引号等内容的可读性问题。反引号通常与~ 在同一个键上。在要显示为“代码”的文本的每一侧添加一个反引号。

标签: java arrays string char


【解决方案1】:

" " 是一个字符串,而charAt 返回原始类型char。您无法将这两种类型与== 进行比较。而是使用char 代表空间,这样你最终会得到char == char,它工作得很好。使用

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

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

【讨论】:

  • 我稍微编辑了您的答案以添加一些说明。希望你不要介意。
  • 你能把它添加为一个选项吗? while(!Character.isSpaceChar(arr[i]))
  • @ControlAltDel 看起来更整洁,让 OP 习惯于进行静态调用和内置函数,而不是重新发明轮子 ;)
【解决方案2】:

你应该使用:

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

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

    // Code
}

Java 不是PHP
Java 中的单引号只能包含一个字符。而双引号严格用于表示字符串。

【讨论】:

  • 您在第二个示例中忘记了否定(OP 想检查字符 isn't 是否为空格)。
猜你喜欢
  • 1970-01-01
  • 2012-09-03
  • 2012-11-04
  • 2011-08-13
  • 2021-04-15
  • 2014-01-09
  • 2011-06-08
  • 2013-08-26
相关资源
最近更新 更多