Відповіді:
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(""))
{
}
equalsJava немає ключового слова. Це ідентифікатор. 3) Оскільки cце char(примітивний тип !!), ви не можете зателефонувати c.equals(...). 4) Навіть якщо ви могли, немає charзначення, яке відображатиметься "". Останнє означає Рядок з "жодними символами в ньому". Це не може відповідати персонажу.
' 'без вмісту?