2014-09-12 3 views
0

Я пишу функцию Count Words, но каждый раз, когда есть одна буква, она не учитывает первое слово в предложении. Входы min и max предназначены для максимальных символов и минимальных символов, которыми может быть слово. Любая помощь или предложения были бы замечательными.Count Words Функция не дает правильных ответов

public static int countWords (String word, int min, int max) 
{ 
    int WordCount = 0; 
    int CharacterCount = 0; 
    int StringLength = word.length(); 
    int n = 0; 

    while (StringLength > 0) 
    { 
     if (Character.isLetter(word.charAt(n))) 
     { 
      CharacterCount = CharacterCount + 1; 
     } 
     else 
     { 
      if (CharacterCount >= min && CharacterCount <= max) 
      { 
       WordCount = WordCount + 1; 
      } 
      else 
      { 
       WordCount = WordCount; 
      } 
     CharacterCount = 0; 
     } 
    n = n + 1; 
    StringLength = StringLength - 1; 
    } 
return WordCount; 
} 
+0

Какие значения используются в качестве аргументов. Покажите типичный пример аргументов и WordCount, которые у вас есть. –

+0

В настоящее время я зацикливаюсь на countWords («abc», 1, 1), он говорит, что есть только два слова, и когда вводится только один, я получаю нуль, поэтому по какой-то причине он не считает первое слово, если это просто письмо. –

+0

Похоже, вы можете забыть добавить последнее слово в конце строки :) PS: 'else {WordCount = WordCount}' лишний. Lose it :) – FoggyDay

ответ

0

Удалите ненужный блок и добавьте еще if в конце цикла while. Проблема заключалась в том, что последнее слово неправильно подсчитано.

public class WordCount { 

    public static int countWords (String word, int min, int max) 
    { 
     int WordCount = 0; 
     int CharacterCount = 0; 
     int StringLength = word.length(); 
     int n = 0; 

     while (StringLength > 0) 
     { 
      if (Character.isLetter(word.charAt(n))) 
      { 
       CharacterCount = CharacterCount + 1; 
      } 
      else 
      { 
       if (CharacterCount >= min && CharacterCount <= max) 
       { 
        WordCount = WordCount + 1; 
       } 
       CharacterCount = 0; 
      } 
      n = n + 1; 
      StringLength = StringLength - 1; 
     } 
     if (CharacterCount > 0) { 
      WordCount++; 
     } 

     return WordCount; 
    } 

    public static void main(String[] args) { 
     System.out.println(countWords("a b c", 1, 1)); 
     System.out.println(countWords("This is a string", 1, 100)); 
    } 
} 
+0

Спасибо за помощь! –

+0

Добро пожаловать. Повеселись! –

0

Если вход только один символ, и на самом деле письмо, то вы будете только когда-либо войти в первый, если заявление, установка CharacterCount к 1.

WordCount будет по-прежнему остаются на 0

Нужно ли else?

+0

Нет, инструкция else не нужна, но мне просто нравится иметь ее там по какой-то странной причине. –

Смежные вопросы