字数在Java上

时间:2011-09-12 06:39:55

标签: java for-loop

如何计算以字符串形式给出的句子的单词?我们只允许使用以下内容:for循环,if statemant,whilecharAtlength()

我写了这段代码:

public static int getWordCount()
{
  String data = "bla bla bla bla";
  int Count = 0;
  for (int i=0; i<data.length(); i++)
  {
    if (data.charAt(i) != ' ')
    Count ++;
  }
  return Count;
}

但它只计算字母而不是单词。

7 个答案:

答案 0 :(得分:9)

这是一个建议:计算' '的数量并加1?

示例:

"bla bla bla bla"
    1   2   3      : 3 + 1   = 4

"hello"
                   : 0 + 1   = 1

如果你想得到想象,你可以保留一个名为lastWasSpace的布尔变量,在运行到空格时将其设置为true,当遇到非空格字符时将其设置为false。如果您只在Count为false时递增lastWasSpace,那么您将能够处理具有多个连续空格的字符串。

             "bla    bla      bla"
                 1      2             : 2 + 1 = 3
lastWasSpace: FFFFTTTFFFFTTTTTFFFF

答案 1 :(得分:2)

给定的代码确实会计算字母而不是单词。您可能希望将条件更改为:

if (data.charAt(i) == ' ')

这意味着,如果找到空格,这将标记下一个单词的开头。此外,最后一个字不会被计算在内,因此您应该返回Count+1而不是Count

我在这里做了几个假设:

  
      
  1. 两个词之间只有一个空格。
  2.   
  3. 不会有任何前导或尾随空格。
  4.   

要考虑单词之间的多个空格,您需要稍微修改一下代码。不是检查字符是否是空格,而是检查字符是否为非空格,而前一个字符对于第一个单词的情况是空格还是无字符。这也可以处理前导和尾随空格。

答案 2 :(得分:1)

String ss =  "   leading spaces in string  ";
String[] sa = ss.trim().split("\\w+");
System.out.println(sa.length);

请注意使用trim来处理周围的空格。

答案 3 :(得分:1)

public class Main {

    public static void main(String[] args) {
        String data = "This is a Test";
        int wordCount = 1;
        int charCount = 0;
        for (int i = 0; i < data.length(); i++) {
            if (data.charAt(i) == ' ') {
                wordCount++;
            } else {
                charCount++;

            }
        }
        System.out.println("wordCount = " + wordCount);
        System.out.println("charCount = " + charCount);
    }
}

答案 4 :(得分:0)

使用以下代码计算行中的单词

            int index = 0;
            int numWords =0;
            boolean prevwhitespace = true;
            String line = "bla bla bla bla";
            while(index < line.length())
            {
                char c = line.charAt(index++);
                boolean currwhitespace = Character.isWhitespace(c);
                if(prevwhitespace && !currwhitespace)
                {
                    numWords++;
                }
                prevwhitespace= currwhitespace;
            }
           System.out.println("no. of words in the line :: " +numWords);

答案 5 :(得分:0)

我的解决方案:

public static int getWordCount() {
  String data = "bla bla bla bla";
  String[] arr = data.split(" ");
  return arr.length;
}

答案 6 :(得分:-2)

String str = "  Hello there   my name     is   Bill    ";
str = str.trim();
int count = 0;
for(int i = 0; i<str.length(); i++) {
    if(str.charAt(i) == ' ' && str.charAt(i-1) != ' ') {
        count++;
    }
}

System.out.println(count+1);