【问题标题】:How to find the average of words using the characters of the JTextArea inputted string如何使用 JTextArea 输入字符串的字符查找单词的平均值
【发布时间】:2020-03-22 01:56:23
【问题描述】:

我正在使用 JTextArea 编写一个分配程序,让用户手动输入文本,然后我/程序计算简单的统计数据。我遇到的问题是,当我计算输入的每个单词的平均长度时,它计算不正确(即:单词:2,字符:6,平均长度:3,但我的程序目前说 3.5)。

我已经尝试过 (double) 和 (float) 并且在 (count++)/words.length 前面什么都没有,看看它是否是程序的舍入错误,这根本不会影响输出。

我还认为这可能是因为它是计算空格''所以我在一个 sn-p 代码中发现了在计算输入字符串的字符时排除了空格。 @https://www.quora.com/How-do-I-count-characters-in-a-string-in-Java-without-using-charcount

我对 Java 还是很陌生,希望能提供帮助!我觉得这是一个简单的解决方案,只是我还没有看到的东西。我已经包含了与此相关的代码部分,未包含的所有内容都是我创建文本字段、框架和按钮等...

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 ); 

    }

【问题讨论】:

  • 我建议您在单步执行最后三个 setText 调用时,退出调试器并密切关注 count 的值。然后问自己“为什么count 发生了变化?”。
  • 嘿@KevinAnderson 我正在使用 JCreator LE(从我的课程中推荐的 IDE),我发现它没有调试器......我可以尝试任何其他建议吗?
  • 你为什么要把 count++ 除以字数而不是字数
  • 穷人的调试器:在代码中的关键点插入System.out.println(...) 语句,以显示变量值、跟踪程序流程等。更好的是,找到更好的 IDE...
  • 是的,我编码的越多,我就越意识到我需要找到一个更好的 IDE...我将从打印语句开始,看看那里发生了什么

标签: java swing average jtextarea string-length


【解决方案1】:

在代码中使用parsedString 之前,您需要对其进行修整。它删除字符串中的前导和尾随空格。

这里 wordCharacters.setText("Characters:" + count++ );wordAverage.setText("Average Length: " + (float) (count++)/words.length ); 这里 count++ 是不必要的,因为它增加了从 for 循环计算的计数。这是您的代码中的问题。请检查以下答案。

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);
}

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多