1

この wordsearch メソッドが機能しない理由を誰か教えてください。count の戻り値は、実行するたびに 0 になります。

public int wordcount(){
    String spaceString = " ";
    int count = 0;
    for(int i = 0; i < this.getString().length(); i++){
        if (this.getString().substring(i).equals(spaceString)){
            count++;

        }
    }
    return count;
}

getString の値 = 私の検索文字列。誰かが助けてくれれば大歓迎です-私は何かばかげたことをしていると確信しています。ディラン

4

7 に答える 7

3

ドキュメントを読む:

部分文字列は、指定されたインデックスの文字で始まり、この文字列の末尾まで拡張されます。

文字if列の最後の文字がスペースである場合、条件は一度だけ真になります。おそらくあなたが欲しかったcharAtですか?(そして、これでも二重スペースを適切に処理できません。空白で分割する方が良いオプションかもしれません。)

于 2013-11-01T13:47:26.937 に答える
3

引数が 1 つしかない部分文字列は、そのインデックスから文字列の末尾までの部分文字列を返すためです。したがって、1 つの文字だけを比較しているわけではありません。部分文字列の代わりに、spaceString を char として定義し、charAt(i) を使用します。

于 2013-11-01T13:48:24.087 に答える
1

this.getString().substring(i) -> これは、インデックス i から文字列の末尾までの部分文字列を返します

たとえば、文字列が Test の場合、上記は Test、est、st、最後に t を返します。

あなたがやろうとしていることには別の方法がありますが、簡単に置き換えることができます

this.getString().substring(i)

spaceString.equals(this.getString().charAt(i))

あなたがしようとしていることを行う別の方法は次のとおりです。

this.getString().split(spaceString)

これは文字列の配列を返します - 元の文字列がスペースで分割されます。

于 2013-11-01T13:47:04.123 に答える
1

使用しているメソッドのドキュメントを読んでください: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int)

つまり、文字列の末尾にスペースがある場合にのみ、カウントはゼロ以外になります

于 2013-11-01T13:47:11.030 に答える
1

部分文字列をそのまま使用しても機能しません。の値getString()が「私の検索文字列」である場合、have substring(i) を使用したループのすべての反復が次を返します。

my search string
y search string
 search string
search string
earch string
arch string
rch string
ch string
h string
 string
string
tring
ring
ing
ng
g

" " に等しいものはないことに注意してください。

スプリットを使ってみてください。

public int countWords(String s){
    return s.split("\\s+").length;
}
于 2013-11-01T14:00:32.637 に答える
0

変化する

if (this.getString().substring(i).equals(spaceString))

if (this.getString().charAt(i) == ' ')
于 2013-11-01T13:46:58.417 に答える
0

this.getString().substring(i) は、(i) のインデックスから文字列の末尾までの文字列を返します。例: i=5 の場合、「茶色の牛」という文字列から「row 牛」が返されます。この機能は必要なものではありません。

コード全体に System.out.println() を追加する (またはデバッガを使用する) と、これが表示されます。String.split() や charAt(i) のようなものを使用する方が良いと思います。

ちなみに、スペースを数えてコードを修正しても、「うちの犬」(単語数 = 2) と「牛」 (単語数 = 1) の条件では正しい値が返されません。単語間に複数のスペースがある場合にも問題があります。また、これは「牛」という 3 つの単語を生成します。

于 2013-11-01T13:55:09.617 に答える