Відповіді:
if (c == ' ')
char
- це примітивний тип даних, тому його можна порівняти ==
.
Також, використовуючи подвійні лапки, ви створюєте String
константу ( " "
), тоді як з одинарними цитатами це char
константа ( ' '
).
Код, який вам потрібен, залежить від того, що ви маєте на увазі під "порожнім простором".
Якщо ви маєте на увазі символ простору ASCII / Latin-1 / Unicode (0x20) aka SP, то:
if (ch == ' ') {
// ...
}
Якщо ви маєте на увазі будь-який із традиційних символів пробілу ASCII (SP, HT, VT, CR, NL), то:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
Якщо ви маєте на увазі будь-який символ пробілу Unicode, то:
if (Character.isWhitespace(ch)) {
// ...
}
Зауважте, що у білі простори Unicode входять додаткові коди управління ASCII та деякі інші символи Unicode у вищих площинах коду; дивіться javadoc для Character.isWhitespace(char)
.
Що ви написали:
if (Equals(ch, " ")) {
// ...
}
Це неправильно на ряді рівнів. По-перше, спосіб, який компілятор Java намагається інтерпретувати, це як виклик методу з підписом boolean Equals(char, String)
.
Equals
як правило, це не буде ім'ям методу. Конвенція Java полягає в тому, що назви методів починаються з малої літери.char
і String
не є порівнянними і не може бути приведений до загального типу бази.У Java існує таке поняття, як "Порівняльник", але це інтерфейс, а не метод, і це оголошено так:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
Іншими словами, ім'я методу є compare
(не Equals
), воно повертає ціле число (не булеве значення) і порівнює два значення, які можна просунути до типу, заданого параметром типу.
Хтось (у видаленій відповіді!) Сказав, що спробував це:
if (c == " ")
Це не вдається з двох причин:
" "
є рядковим літералом, а не літеральним символом, і Java не дозволяє прямого порівняння String
та char
значень.
НІКОЛИ не слід порівнювати рядки або рядкові літерали з використанням ==
. ==
Оператор засланого типу порівнює ідентифікатор об'єкта, а НЕ значення об'єкта. У випадку String
звичайного є різні об'єкти з різною ідентичністю і однаковим значенням. ==
Тест часто дає неправильну відповідь ... з точки зору того , що ви намагаєтеся зробити тут.
Ви можете використовувати
Character.isWhitespace(c)
або будь-який з інших доступних методів у класі символів.
if (c == ' ')
також працює.
Моєю пропозицією було б:
if (c == ' ')
Для порівняння символів ви використовуєте ==
оператор:
if (c == ' ')
У цьому випадку ви думаєте про функцію порівняння рядків "String".equals("some_text")
. Символам не потрібно використовувати цю функцію. Натомість достатньо стандартного ==
оператора порівняння.
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
На перший погляд, ваш код не складеться. Оскільки у вкладеному файлі, якщо у оператора немає дужок, він буде розглядати наступний рядок код, який він повинен виконати. Крім того, ви порівнюєте знак із рядком, "". Спробуйте порівняти значення як символи. Я думаю, що правильним буде синтаксис:
if(c == ' '){
//do something here
}
Але знову ж таки, я не знайомий з "Equal"
класом
Ви можете спробувати:
if(Character.isSpaceChar(ch))
{
// Do something...
}
Або:
if((int) ch) == 32)
{
// Do something...
}
Для порівняння Strings
ви повинні використовувати ключове слово рівний .
if(c.equals(""))
{
}
equals
Java немає ключового слова. Це ідентифікатор. 3) Оскільки c
це char
(примітивний тип !!), ви не можете зателефонувати c.equals(...)
. 4) Навіть якщо ви могли, немає char
значення, яке відображатиметься ""
. Останнє означає Рядок з "жодними символами в ньому". Це не може відповідати персонажу.
' '
без вмісту?