답변:
필요한 코드는 "빈 공간"이 의미하는 바에 따라 다릅니다.
ASCII / Latin-1 / 유니 코드 공백 문자 (0x20) 일명 SP를 의미하는 경우 :
if (ch == ' ') {
// ...
}
기존 ASCII 공백 문자 (SP, HT, VT, CR, NL)를 의미하는 경우 :
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
유니 코드 공백 문자를 의미하는 경우 :
if (Character.isWhitespace(ch)) {
// ...
}
유니 코드 공백에는 추가 ASCII 제어 코드 와 상위 코드 플레인의 다른 유니 코드 문자가 포함됩니다. 에 대한 javadoc을 참조하십시오 Character.isWhitespace(char)
.
당신이 쓴 것은 다음과 같습니다.
if (Equals(ch, " ")) {
// ...
}
이것은 여러 수준에서 잘못된 것입니다. 첫째, Java 컴파일러가이를 시그니처가있는 메서드에 대한 호출로 해석하려고 시도하는 방식입니다 boolean Equals(char, String)
.
Equals
어쨌든 일반적으로 메소드의 이름이 아닙니다. Java 규칙은 메소드 이름이 소문자로 시작한다는 것입니다.char
과 String
비교할 수 없습니다 공통 기본 형식으로 캐스팅 할 수 없습니다.Java에는 Comparator와 같은 것이 있지만 메서드가 아닌 인터페이스이며 다음과 같이 선언됩니다.
public interface Comparator<T> {
public int compare(T v1, T v2);
}
즉, 메서드 이름은 compare
(아님 Equals
)이고 정수 (부울 아님)를 반환하며 유형 매개 변수가 제공하는 유형으로 승격 될 수있는 두 값을 비교합니다.
누군가 (삭제 된 답변에서!)는 이것을 시도했다고 말했습니다.
if (c == " ")
두 가지 이유로 실패합니다.
" "
문자 리터럴이 아닌 문자열 리터럴이며 Java는 String
및 char
값의 직접 비교를 허용하지 않습니다 .
을 사용하여 문자열 또는 문자열 리터럴을 절대 비교해서는 안됩니다 ==
. ==
참조 유형 의 연산자는 개체 값이 아닌 개체 ID를 비교합니다. 이 경우 String
다른 개체가 다른 ID와 동일한 값을 갖는 것이 일반적입니다. ==
테스트는 것이다 종종 잘못된 대답을 여기에 뭘 하려는지의 관점에서 ....
당신은 사용할 수 있습니다
Character.isWhitespace(c)
또는 Character 클래스에서 사용 가능한 다른 메서드 중 하나입니다.
if (c == ' ')
또한 작동합니다.
내 제안은 다음과 같습니다.
if (c == ' ')
이 경우 String 비교 함수를 생각하고 있습니다 "String".equals("some_text")
. 문자는이 기능을 사용할 필요가 없습니다. 대신 표준 ==
비교 연산자로 충분합니다.
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
당신은 시도 할 수 있습니다:
if(Character.isSpaceChar(ch))
{
// Do something...
}
또는:
if((int) ch) == 32)
{
// Do something...
}
비교하려면 equals 키워드 Strings
를 사용해야합니다 .
if(c.equals(""))
{
}
equals
Java 에는 키워드 가 없습니다 . 식별자입니다. 3) c
은 char
(기본 유형 !!)이므로을 호출 할 수 없습니다 c.equals(...)
. 4) 가능하더라도 char
에 매핑되는 값 은 없습니다 ""
. 후자는 "문자가없는"문자열을 의미합니다. 캐릭터와 일치 할 수 없습니다.
' '
내용이 없습니까?