Как найти среднее значение слов, используя символы введенной строки JTextArea - PullRequest
0 голосов
/ 22 марта 2020

Я пишу программу для назначения с использованием JTextArea, чтобы пользователь вручную вводил текст, а затем программа вычисляет простую статистику. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я вычисляю среднюю длину каждого введенного слова, он вычисляется неправильно (ie: words: 2, символов: 6, средняя длина: 3, но моя программа в настоящее время говорит 3,5).

Я пробовал (double) и (float) и ничего перед (count ++) / words.length, чтобы посмотреть, были ли это ошибки округления программы, и это никак не влияет на вывод.

Я также подумал, что это может быть потому, что это подсчет пробелов '', поэтому я обнаружил фрагмент кода, который исключает пробел при подсчете символов введенной строки. @ https://www.quora.com/How-do-I-count-characters-in-a-string-in-Java-without-using-charcount

Я все еще новичок в Java, и помощь будет принята с благодарностью! Я чувствую, что это простое решение, просто то, чего я пока не вижу. Я включил часть кода, которая относится к этому, и все, что не включено, - это создание текстового поля, рамки и кнопок и т. Д. c ...

public void actionPerformed(ActionEvent event){

        String parsedString = inputText.getText();
        String delims = "[1234567890.,?!()*\\s]+";
        String words[]=parsedString.split(delims);

        char [] ch = parsedString.toCharArray();
        int count=0;
        for (int i = 0; i < ch.length; i++) {
            if (ch[i]!=' '){
            count++;
            }
        }

        wordCounter.setText("Words inputed: " + words.length);
        wordCharacters.setText("Characters:" + count++ );
        wordAverage.setText("Average Length: " + (float) (count++)/words.length ); 

    }

1 Ответ

0 голосов
/ 22 марта 2020

Вам нужно обрезать parsedString, прежде чем использовать его в коде. Удаляет пробелы в начале и в конце строки.

Здесь wordCharacters.setText("Characters:" + count++ ); и wordAverage.setText("Average Length: " + (float) (count++)/words.length ); здесь count++ не нужны, поскольку они увеличивают число, рассчитанное для l oop. Это проблема в вашем коде. Пожалуйста, проверьте ответ ниже.

public void actionPerformed(ActionEvent event) {
    String parsedString = inputText.getText().trim();
    String delims = "[1234567890.,?!()*\\s]+";
    String[] words = parsedString.split(delims);

    char[] ch = parsedString.toCharArray();
    int count = 0;
    for (int i = 0; i < ch.length; i++) {
        if (ch[i] != ' ') {
            count++;
        }
    }
    wordCounter.setText("Words inputed: " + words.length);
    wordCharacters.setText("Characters:" + count);
    wordAverage.setText("Average Length: " + (float) (count) / words.length);
}
...