回答:
必要なコードは、「空のスペース」の意味によって異なります。
ASCII / Latin-1 / Unicodeスペース文字(0x20)別名SPを意味する場合:
if (ch == ' ') {
// ...
}
従来のASCII空白文字(SP、HT、VT、CR、NL)のいずれかを意味する場合は、次のようになります。
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
Unicodeの空白文字を意味する場合は、次のようになります。
if (Character.isWhitespace(ch)) {
// ...
}
含ま空白ユニコードがあることに注意してください追加の ASCII制御コード、およびより高いコード・プレーン内のいくつかの他のUnicode文字が、の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
)、整数(ブール値ではない)を返し、typeパラメーターで指定された型に昇格できる2つの値を比較します。
誰かが(削除された回答で!)彼らはこれを試したと言いました:
if (c == " ")
これは2つの理由で失敗します。
" "
は文字リテラルであり、文字リテラルではありません。Javaでは、String
およびのchar
値を直接比較することはできません。
を使用して文字列または文字列リテラルを比較しないでください==
。==
参照型の演算子は、オブジェクト値ではなくオブジェクトIDを比較します。以下の場合にはString
、それ異なるIDと同じ値を持つ別のオブジェクトを持つことが一般的です。==
テストはします、多くの場合、間違った答えを与えるあなたがここでやろうとしているものの視点から...。
あなたは使うことができます
Character.isWhitespace(c)
または、Characterクラスで使用可能なその他のメソッド。
if (c == ' ')
も動作します。
私の提案は:
if (c == ' ')
この例では、ストリング比較関数について考えています"String".equals("some_text")
。Charsはこの関数を使用する必要はありません。代わりに、標準の==
比較演算子で十分です。
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...
}
比較Strings
するには、equalsキーワードを使用する必要があります。
if(c.equals(""))
{
}
equals
Javaにはキーワードはありません。識別子です。3)c
はchar
(プリミティブ型!!)なので、は呼び出せませんc.equals(...)
。4)可能であっても、にchar
マップされる値はありません""
。後者は、「文字が含まれていない」文字列を意味します。それは文字と一致することはできません。
' '
内容のない?