2014-10-07 2 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:

Несовместимые типы операндов Char и Строка

Даже когда я использую метод toCharArray, ошибка остается. Может ли кто-нибудь объяснить мне, почему?

+1

Я думаю, вы должны взглянуть на регулярные выражения и String.split, если вы хотите проанализировать строку по слову. –

+0

'toCharArray' * будет * работать, но вы в настоящее время смотрите на сравнение значения String (не char). Просто измените свою последнюю строку на '}, пока (arr [i]! = '');' И вы должны лететь! – jbutler483

+0

Я не вижу, как преобразование в 'char []' поможет вам искать слово за словом. 'String' имеет множество методов, которые упрощают работу с последовательностями символов - 'indexOf',' substring' и уже упомянутыми 'split' и регулярными выражениями, которые вы не можете использовать на' char [] ' , – ajb

ответ

7

" " - это строка, а charAt возвращает примитивный тип char. Вы не можете сравнить эти два типа с ==. Вместо этого используйте char, представляя пространство, поэтому в итоге вы получите char == char, который отлично работает. Используйте

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

или

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

Я немного отредактировал ваш ответ, чтобы добавить некоторые пояснения. Надеюсь, вы не против. – Pshemo

+0

Можете ли вы добавить это как вариант. While (! Character.isSpaceChar (arr [i])) – StackFlowed

+0

@wrongAnswer сделал это – ControlAltDel

0

Вы должны использовать:

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

ИЛИ

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

    // Code 
} 

Java не PHP.
Одинарные котировки в Java могут содержать только один символ. Хотя двойные кавычки строго используются для представления строк.

+0

Вы забыли отрицание в своем втором примере (OP хочет проверить, не является ли символ * не * пробелом). – Pshemo

+0

oops. Прости. изм. –

Смежные вопросы