【问题标题】:Simple Java App to calculate the average of an indefinite amount of entered numbers简单的 Java 应用程序,用于计算无限量输入数字的平均值
【发布时间】:2012-01-03 17:04:42
【问题描述】:

我对 Java 完全陌生,有一个任务即将到来;简介如下:

一个 Swing 界面。 应用程序必须允许用户输入一些数据并单击按钮。 应用程序必须有一个事件处理程序来响应单击按钮事件。 应用程序必须对输入的数据执行一些操作。 应用程序必须将修改后的数据返回给用户。

我最初打算创建一个将数字转换为不同单位(例如,公斤到磅)的应用程序,但发现它非常困难,因此决定开发一个找到多个输入平均值的应用程序。

这是我用于查找预定义数组的平均值的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

    class FindAverageNumber extends JFrame {
        public static void main(String[] args){
            double numbers[] = new double[]{1,2,3,4,5,6,7,8,9,20};
            double average = 0;
            double cumulative = 0;
            for (int i=0; i<numbers.length; i++){
                double selected = numbers[i];
                cumulative = (cumulative + selected);
            }
            average = (cumulative / numbers.length);
            System.out.println("The average of the array is: "+average);
        }
    }

代码似乎运行正常,但是,作为 Java 新手,我不知道如何从用户那里获取这些数字,同时还结合了一个摇摆界面(我迷路了)。我假设接受一个数组是最好的方法,用户会看到一个文本字段。我不知道如何将输入分成数组中自己的索引。

如果有任何帮助,我将不胜感激;我意识到我有很多基本问题。

【问题讨论】:

  • 如果你需要做一个摇摆,你应该看看 Netbeans IDE。他们有一个很好的挥杆制造商,您只需拖放所需的组件,创建事件处理程序等。如果您不介意我问,您对单位转换问题有什么困难?是与数学有关,还是像现在这样在挥杆方面有问题?
  • 我实际上正在使用 Netbeans。像Java一样,我对它很陌生。我对转换器的问题是我认为它只是在我的脑海中-添加诸如下拉列表之类的内容以选择诸如重量,长度,时间,温度等之类的内容......另一个用于转换的特定单位,kg,lb, sec, hrs etc....一个供用户输入数量的文本字段,另一个用于转换单位的下拉列表。这些都是我不知道该怎么做的事情。我觉得我可以毫无问题地写出伪代码,但是当涉及到正确的编码时我非常没用
  • 另见example

标签: java swing average


【解决方案1】:

如果您有文本字段,则需要解析输入。您可以使用String.split() 方法:

例如,如果您收到 input"1,2,3,4,5",您会这样称呼它

input.split(",");

【讨论】:

  • 最好链接到最新版本的JavaDocs。我已将您的答案编辑为指向 J2SE 7。有关获取最新文档链接的提示,请参阅 point 2 of advantages
  • String.split() 是一个很好的建议,但要非常小心地在片段上调用 ​​trim() 以删除用户可能键入的任何前导或尾随空格。然后检查空字符串,以防用户错误地连续输入了两个逗号。这是 split() 的两个常见缺陷。
【解决方案2】:

它不会尝试接受数组,而是使用包含 JTextField 的 UI 来输入单个数字,并使用 JButton 来提交输入。 然后,您可以根据已处理的数字更新平均值/总计/...(无论您想计算什么)。如果用户想添加一个额外的数字,它只需填写一个额外的值并再次按下按钮。对用户来说更加友好,然后必须输入一个数组,并且更少混淆的可能性(用空格、分号、逗号等分隔数字)

要显示计算值,您可以使用JLabel(或多个)。

要开始构建 UI,您可以查看出色的 Swing tutorial。要搜索的关键字或我已经提到的类,以及 JFrameJPanel 作为容器来添加所有这些组件

【讨论】:

  • 我想我可以试试这个。这似乎对我来说最有意义。谢谢
  • @mKorbel 1 级支持经验得到了回报。不仅仅是回答问题,而是试图引导客户朝着正确的方向前进,以避免将来进一步支持,那里的事情已经变成一团丑陋的烂摊子
【解决方案3】:

您可以将用户输入视为由诸如 ,(comma) 或 :(colon) 之类的字符分隔的字符串。获得输入后,您可以拆分数字并进行计算。

注意:你是学生,我不想给出具体的程序来做到这一点。自行探索,如果再次遇到困难,可以提出问题。

【讨论】:

    【解决方案4】:

    查看任何 Swing 教程。具体来说,看看JFrameJTextFieldJButton。您还应该阅读 MVC 是什么。在这种情况下,您的 model 包含输入的数字(或其中的某些功能)。因此,您可以选择避免使用逗号分隔的字符串,而只显示一个添加按钮。如果您确实走的是一次只允许输入一个数字的路线,请查看JFormattedTextFieldDecimalFormat 配对

    此外,从数学的角度来看,如果您要跟踪不定数量的数字,您应该考虑使用BigDecimal。请注意,它有一个接受字符串的构造函数。

    【讨论】:

      【解决方案5】:

      去谷歌搜索“Java Swing 教程”。关于如何向用户显示 UI 控件,将有多个选项可供选择。

      http://www.javabeginner.com/java-swing/java-swing-tutorial

      甚至还有用于在其中的 JFrame 上显示 JTextField 的代码。您应该能够弄清楚如何将 JButton 添加到该组合中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-16
        • 1970-01-01
        相关资源
        最近更新 更多