Respostas:
if (c == ' ')
charé um tipo de dados primitivo, portanto, pode ser comparado ==.
Além disso, usando aspas duplas você cria Stringconstant ( " "), enquanto com aspas simples é uma charconstante ( ' ').
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:
if (ch == ' ') {
// ...
}Se você se refere a qualquer um dos caracteres de espaço em branco ASCII tradicionais (SP, HT, VT, CR, NL), então:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}Se você quer dizer qualquer caractere de espaço em branco Unicode, então:
if (Character.isWhitespace(ch)) {
// ...
}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:
if (Equals(ch, " ")) {
// ...
}
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).
Equalsnormalmente 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.chare Stringnã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:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
Em outras palavras, o nome do método é compare(not Equals), 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:
if (c == " ")
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 valores Stringe char.
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 de Stringé 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.
Você poderia usar
Character.isWhitespace(c)
ou qualquer um dos outros métodos disponíveis na classe Character.
if (c == ' ')
também funciona.
Minha sugestão seria:
if (c == ' ')
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.
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
À 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:
if(c == ' '){
//do something here
}
Mas, novamente, não estou familiarizado com a "Equal"classe
Podes tentar:
if(Character.isSpaceChar(ch))
{
// Do something...
}
Ou:
if((int) ch) == 32)
{
// Do something...
}
Para comparar, Stringsvocê deve usar a palavra-chave igual .
if(c.equals(""))
{
}
equalspalavra-chave em Java. É um identificador. 3) Como cé um char(tipo primitivo !!), você não pode chamar c.equals(...). 4) Mesmo se você pudesse, não há nenhum charvalor mapeado para "". O último significa uma string sem "nenhum caractere". Isso não pode corresponder a um personagem.
' 'sem conteúdo?