これが私が持っているものです:
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (Equals(c," "))
}
}
しかし、そのコードはそのメソッドのSymbolが見つからないと言っています。 Javaがこのような比較子を持っていたのを覚えていますか。
if (c == ' ')
char
はプリミティブデータ型なので、==
と比較できます。
また、二重引用符を使用してString
定数(" "
)を作成し、一重引用符ではchar
定数(' '
)を作成します。
あなたが必要とするコードはあなたが「空のスペース」によって何を意味するかに依存します。
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)) {
// ...
}
Unicodeの空白文字には追加のASCII制御コード、、およびより上位のコードプレーン内の他のUnicode文字が含まれていることに注意してください。 Character.isWhitespace(char)
のJavadocを参照してください。
あなたが書いたのはこれです:
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
の値を直接比較することはできません。
==
を使って文字列や文字列リテラルを比較しないでください。参照型の==
演算子は、オブジェクトの値ではなく、オブジェクトの識別情報を比較します。 String
の場合、異なるアイデンティティと同じ値を持つ異なるオブジェクトを持つのが一般的です。 ==
テストは間違った答えを与えることがよくあります...ここでやろうとしていることの観点から。
あなたが使用することができます
Character.isWhitespace(c)
またはCharacterクラスの他の利用可能なメソッド。
if (c == ' ')
また働きます。
char
はプリミティブ型なので、c == ' '
と書くだけです。String
やCharacter
のような参照型に対してはequals()
を呼び出すだけです。
私の提案は、
if (c == ' ')
文字を比較するには==
演算子を使います。
if (c == ' ')
Character.isSpaceChar(c) || Character.isWhitespace(c)
は私のために働きました。
この場合、あなたは文字列比較関数"String".equals("some_text")
を考えています。文字はこの関数を使用する必要はありません。代わりに、標準の==
比較演算子で十分です。
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
一見すると、あなたのコードはコンパイルされません。入れ子になったif文には中括弧がないので、次の行を実行するコードと見なします。また、charとString ""を比較しています。代わりに文字として値を比較してみてください。正しい構文は次のようになると思います。
if(c == ' '){
//do something here
}
しかし、"Equal"
クラスには慣れていません
あなたが試すことができます:
if(Character.isSpaceChar(ch))
{
// Do something...
}
または
if((int) ch) == 32)
{
// Do something...
}