Подсчет слов на Java - PullRequest
       2

Подсчет слов на Java

2 голосов
/ 12 сентября 2011

Как я могу посчитать слова предложения, заданные в виде строки? Нам разрешено использовать только следующее: for loop, if statemant, while, charAt, length().

Я написал этот код:

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 ]

9 голосов
/ 12 сентября 2011

Вот предложение: посчитайте число ' ' и добавьте 1?

Пример:

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

"hello"
                   : 0 + 1   = 1

Если вы хотите получить фантазию, вы можете оставить логическую переменную с именем, например, lastWasSpace, установите для нее значение true при запуске в пробел, и установите значение false, если вы столкнетесь с непробельным символом. Если вы увеличиваете значение Count только тогда, когда lastWasSpace равно false, вы сможете обрабатывать строки также с несколькими последовательными пробелами.

             "bla    bla      bla"
                 1      2             : 2 + 1 = 3
lastWasSpace: FFFFTTTFFFFTTTTTFFFF
2 голосов
/ 12 сентября 2011

данный код действительно будет считать буквы, а не слова.Вы можете изменить условие на:

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

. Это означает, что если вы найдете пробел, это будет означать начало следующего слова.Кроме того, последнее слово не будет засчитано, поэтому вы должны вернуть Count+1 вместо Count.

Здесь я сделал несколько предположений:

  1. Там будетдолжен быть ровно один пробел между словами.
  2. Не будет никаких начальных или конечных пробелов.

Чтобы рассмотреть несколько пробелов между словами, вам нужно изменить коднемного.Вместо проверки, является ли символ пробелом, проверьте, не является ли символ не пробелом, и предыдущий символ был либо пробелом, либо отсутствовал в случае первого слова.Это также будет обрабатывать начальные и конечные пробелы.

1 голос
/ 12 сентября 2011
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);
    }
}
1 голос
/ 12 сентября 2011
String ss =  "   leading spaces in string  ";
String[] sa = ss.trim().split("\\w+");
System.out.println(sa.length);

Обратите внимание на использование trim для обработки окружающих пробелов.

0 голосов
/ 07 марта 2015
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);
0 голосов
/ 19 декабря 2014

Мое решение:

public static int getWordCount() {
  String data = "bla bla bla bla";
  String[] arr = data.split(" ");
  return arr.length;
}
0 голосов
/ 12 сентября 2011

Используйте приведенный ниже код для подсчета слов в строке,

            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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...