답변:
필요한 코드는 "빈 공간"이 의미하는 바에 따라 다릅니다.
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(""))
{
}
equalsJava 에는 키워드 가 없습니다 . 식별자입니다. 3) c은 char(기본 유형 !!)이므로을 호출 할 수 없습니다 c.equals(...). 4) 가능하더라도 char에 매핑되는 값 은 없습니다 "". 후자는 "문자가없는"문자열을 의미합니다. 캐릭터와 일치 할 수 없습니다.
' '내용이 없습니까?