Вот что у меня есть:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
Но этот код говорит, что не может найти символ для этого метода. Я помню, как у Java был такой компаратор ... Есть предложения?
java
char
whitespace
Йоник
источник
источник
' '
без содержания?Ответы:
char
является примитивным типом данных, поэтому его можно сравнить с==
.Кроме того, используя двойные кавычки, вы создаете
String
constant (" "
), а с одинарными кавычками -char
constant (' '
).источник
Код, который вам нужен, зависит от того, что вы подразумеваете под «пустым пространством».
Если вы имеете в виду пробел ASCII / Latin-1 / Unicode (0x20), он же SP, то:
Если вы имеете в виду любой из традиционных символов пробела ASCII (SP, HT, VT, CR, NL), то:
Если вы имеете в виду любой пробельный символ Unicode, то:
Обратите внимание, что пробелы Unicode включают дополнительные управляющие коды ASCII и некоторые другие символы Unicode в более высоких плоскостях кода; см. javadoc для
Character.isWhitespace(char)
.Вы написали следующее:
Это неверно на нескольких уровнях. Во-первых, компилятор Java пытается интерпретировать это как вызов метода с сигнатурой
boolean Equals(char, String)
.Equals
в любом случае обычно не будет именем метода. По соглашению Java имена методов начинаются с строчной буквы.char
иString
не сопоставимы и не могут быть приведены к общему базовому типу.В Java есть компаратор, но это интерфейс, а не метод, и он объявлен так:
Другими словами, имя метода
compare
(неEquals
), он возвращает целое число (не логическое) и сравнивает два значения, которые могут быть повышены до типа, заданного параметром типа.Кто-то (в удаленном ответе!) Сказал, что пробовал это:
Это не удается по двум причинам:
" "
является буквальной строка и не литера, и Java не позволяет напрямую сравниватьString
иchar
значение.НИКОГДА не сравнивайте строки или строковые литералы, используя
==
.==
Оператор ссылочного типа сравнивает идентификатор объекта, а не значение объекта. В случаеString
с разными объектами с разной идентичностью и одинаковым значением, как правило, используются разные объекты.==
Тест часто дает неправильный ответ ... с точки зрения того , что вы пытаетесь сделать здесь.источник
Вы могли бы использовать
или любой из других доступных методов в классе Character.
тоже работает.
источник
Поскольку
char
это примитивный тип, можно просто писатьc == ' '
.Вам нужно только вызвать
equals()
ссылочные типы, такие какString
илиCharacter
.источник
Мое предложение было бы:
источник
Для сравнения персонажей вы используете
==
оператор:источник
Character.isSpaceChar(c) || Character.isWhitespace(c)
работал у меня.источник
В этом случае вы думаете о функции сравнения строк
"String".equals("some_text")
. Символам не нужно использовать эту функцию. Вместо этого==
будет достаточно стандартного оператора сравнения.источник
На первый взгляд, ваш код не компилируется. Поскольку вложенный оператор if не имеет фигурных скобок, он будет рассматривать следующую строку как код, который должен выполнить. Кроме того, вы сравниваете символ со строкой "". Вместо этого попробуйте сравнить значения как символы. Я думаю, что правильный синтаксис будет:
Но опять же, я не знаком с
"Equal"
классомисточник
Можешь попробовать:
Или:
источник
Для сравнения
Strings
вы должны использовать ключевое слово equals .источник
equals
Java нет ключевого слова. Это идентификатор. 3) Посколькуc
этоchar
(примитивный тип !!), вы не можете позвонитьc.equals(...)
. 4) Даже если бы вы могли, нет никакогоchar
значения, которому соответствовали бы""
. Последнее означает строку, в которой «нет символов». Это не может соответствовать персонажу.