Aqui está o que eu tenho:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
Mas esse código diz que não consegue encontrar o Symbol para esse método. Lembro-me de Java ter um comparador como este ... Alguma sugestão?
java
char
whitespace
Jonik
fonte
fonte
' '
sem conteúdo?Respostas:
char
é um tipo de dados primitivo, portanto, pode ser comparado==
.Além disso, usando aspas duplas você cria
String
constant (" "
), enquanto com aspas simples é umachar
constante (' '
).fonte
O código de que você precisa depende do que você entende por "um espaço vazio".
Se você quer dizer o caractere de espaço ASCII / Latin-1 / Unicode (0x20) também conhecido como SP, então:
Se você se refere a qualquer um dos caracteres de espaço em branco ASCII tradicionais (SP, HT, VT, CR, NL), então:
Se você quer dizer qualquer caractere de espaço em branco Unicode, então:
Observe que há espaços em branco Unicode que incluem códigos de controle ASCII adicionais e alguns outros caracteres Unicode em planos de código superiores; consulte o javadoc para
Character.isWhitespace(char)
.O que você escreveu foi isto:
Isso está errado em vários níveis. Em primeiro lugar, a forma como o compilador Java tenta interpretar isso é como uma chamada a um método com uma assinatura de
boolean Equals(char, String)
.Equals
normalmente não seria o nome de um método. A convenção Java é que os nomes dos métodos começam com uma letra minúscula.char
eString
não são comparáveis e não pode ser convertido para um tipo base comum.Existe algo como um Comparador em Java, mas é uma interface, não um método, e é declarado assim:
Em outras palavras, o nome do método é
compare
(notEquals
), ele retorna um inteiro (não um booleano) e compara dois valores que podem ser promovidos ao tipo fornecido pelo parâmetro type.Alguém (em uma resposta excluída!) Disse que tentou isso:
Isso falha por dois motivos:
" "
é um literal de string e não um literal de caractere, e Java não permite comparação direta de valoresString
echar
.Você NUNCA deve comparar Strings ou literais de String usando
==
. O==
operador em um tipo de referência compara a identidade do objeto, não o valor do objeto. No caso deString
é comum ter objetos diferentes com identidade diferente e o mesmo valor. Um==
teste geralmente dará a resposta errada ... da perspectiva do que você está tentando fazer aqui.fonte
Você poderia usar
ou qualquer um dos outros métodos disponíveis na classe Character.
também funciona.
fonte
Como
char
é um tipo primitivo, você pode simplesmente escreverc == ' '
.Você só precisa chamar
equals()
para tipos de referência comoString
ouCharacter
.fonte
Minha sugestão seria:
fonte
Para comparar o personagem, você usa o
==
operador:fonte
Character.isSpaceChar(c) || Character.isWhitespace(c)
trabalhou para mim.fonte
Neste caso, você está pensando na função de comparação de String
"String".equals("some_text")
. Os caracteres não precisam usar esta função. Em vez disso, um==
operador de comparação padrão será suficiente.fonte
À primeira vista, seu código não será compilado. Como a instrução if aninhada não tem chaves, ela considerará a próxima linha o código que deve executar. Além disso, você está comparando um char com uma String, "". Tente comparar os valores como caracteres. Acho que a sintaxe correta seria:
Mas, novamente, não estou familiarizado com a
"Equal"
classefonte
Podes tentar:
Ou:
fonte
Para comparar,
Strings
você deve usar a palavra-chave igual .fonte
equals
palavra-chave em Java. É um identificador. 3) Comoc
é umchar
(tipo primitivo !!), você não pode chamarc.equals(...)
. 4) Mesmo se você pudesse, não há nenhumchar
valor mapeado para""
. O último significa uma string sem "nenhum caractere". Isso não pode corresponder a um personagem.