【问题标题】:How to get the average of the text file values and output it in a JTextArea如何获取文本文件值的平均值并将其输出到 JTextArea
【发布时间】:2021-09-04 21:06:09
【问题描述】:

我有这个 GUI 项目,我必须在其中获取文件的值,通过单击按钮获取值的平均值并将结果输出到 JTextArea。我的代码所做的是获取文本文件的值并将其输出到 JTextArea textbox1。我的问题是获得平均值。我使用.getText() 来获取在textbox1 上输出的文本文件的值,然后我拆分这些值,因为这些值由; 分隔,然后我得到平均值。问题是,我的代码只添加单个值并且不除以元素的数量,因此只打印每个数字的附加值。谁能给点建议?

请注意,我通过单击按钮获得平均值,并且必须将结果输出到名为 textbox2 的 JTextArea 中。

这是我的代码

btn4.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            Double num,ave = 0.000000000, sum = 0.0000000;
            String input = textbox1.getText();
            String[] inputed = input.split("[ ;]+");
            int length = inputed.length;
        
            for(String part: input.split("[ ;]+"))  {
                for(int i=0; i < length; i++) {
                    num = Double.parseDouble(part);
                    sum += num ;
                }   
            }       
                ave = sum / length ;
                textbox2.setText(" " +ave);             
        }
        });

以下是文本文件的内容:

5.12345;1.1;2.12;3.123;4.1234;

【问题讨论】:

标签: java swing user-interface average


【解决方案1】:

您可以使用 Streams API 在单个语句中获取平均值,如下所示:

double average = Stream.of(input.split(";")).collect(Collectors.averagingDouble(Double::parseDouble)).doubleValue();

修改你的widgetSelected()方法如下:

public void widgetSelected(SelectionEvent e) {
    String input = textbox1.getText();
    double ave = Stream.of(input.split(";")).collect(Collectors.averagingDouble(Double::parseDouble)).doubleValue();
    textbox2.setText(" " +ave);             
}

【讨论】:

    【解决方案2】:

    结果是错误的,因为嵌套的 for 语句: for(int i=0; i

    public class Main {
      public static void main(String[] args) {
        double sum = 0.0;
        String input = "1; 2; 3; 100";
    
        int length = 0;
        for(String part: input.split("[ ;]+"))  {
          sum += Double.parseDouble(part);
          length++;
        }     
        double ave = sum / length ;
        System.out.println(ave);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 1970-01-01
      • 2015-03-17
      相关资源
      最近更新 更多