2016-09-22 16 views
-11

[OK]を、この質問が何度も尋ねられたと私も知っているが、私はこの質問に出くわし、このコードを書いた。私は正しい出力を与えていますが、正しいかどうかは判断できません。文字列中の単語数

public class WordCount 
{ 
public static void main(String[] args) throws IOException 
{ 
    System.out.println("Enter a String"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String s1= br.readLine(); 
    s1 = s1+" "; 
    String ns = ""; 
    int count = 0; 
    for(int i = 0; i < s1.length(); i++) 
    { 
     char ch = s1.charAt(i); 
     if(ch == ' ') 
     { 
      //ns = ns+ch; 
      count++; 
     } 
     /*else 
     { 
      ns = ns+ch; 
     }*/ 
    } 
    System.out.println("There are "+count+" words in the string");  
} 

} 
+9

あなたは文字通りあなたの質問に、なぜそれが悪い質問であるかを記述しました。ブラボー – rmlan

+0

私はあなたの質問の目的を正直に理解していません。コミュニティがあなたにここで何を手助けすべきですか? – kennasoft

+0

'私に正しい出力を与えても、正しいかどうか判断できません。あなたはあなた自身の質問に答えました。 – jhamon

答えて

1
int lineCount = yourString.trim().split("\\s+").length; 

split()関数は指定された方法で文字列を分割することによって作られたトークンを含む配列を返します。あなたは文字列をスペースで区切り、それは配列なので、その長さをとります。それはあなたが単語を数えるために必要なすべてです。あなたがすることなく、任意の文字列の単語をカウントしたい場合は良い点・トーマス

+1

最後に空白を追加する前に、行をトリミングしてください。また、単語とタブ文字の間に複数の空白がないか調べる必要があります。 –

+3

悪い質問には回答しないでください。これはちょうどこのページの質に気にせず、それにとにかく答えてくれる人が常にいるので、これらの人々は質問を改善するのに少しでも時間を費やすことを避けるようにするだけです。 – Tom

-1

編集(。regex\\s+は、関数がすべての空白で文字列を分割、すなわち、すべての単語を含む配列を返します) space.itは非常に簡単ですあなたのコードはちょっと正しいですが、間違っています。これを試してください 次の例を見てください。

//correct the code in loop. 

// s1 is your string. 

for(int i = 0; i < s1.length(); i++) 
{ 


    char ch = s1.charAt(i); 

    if(ch != ' ') 
    { 
     count++; 

    } 
} 
System.out.println(count); 
関連する問題