标记程序计算?

时间:2012-05-28 04:06:58

标签: java arraylist

我必须制作一个标记程序,显示用户输入的一组标记和一些计算(平均值,最大值,最小值,范围等)。它还应该能够按升序对标记进行排序。我管理(帮助)显示标记并对它们进行排序但是我无法让程序进行计算并显示它们。这是我到目前为止的所有代码:

 ArrayList <Integer> marks = new ArrayList();

 private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {
    Collections.addAll(marks, (Integer.parseInt(markInput.getText())));

    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
    text.append(mark.toString()).append('\n');
    }

    markdisplayTextArea.setText(text.toString());
    }

 private void sortButtonActionPerformed(java.awt.event.ActionEvent evt) {
    Collections.sort(marks);

    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
    text.append(mark.toString()).append('\n');
    }

    markdisplayTextArea.setText(text.toString());
    }

 private void analyzeButtonActionPerformed(java.awt.event.ActionEvent evt) {

    analyzeTextArea.setText("Class average:" +);
    analyzeTextArea.setText("Maximum mark:" +);
    analyzeTextArea.setText("Minimum mark:" +);
    analyzeTextArea.setText("Range of marks:" +);
    }

按下TextArea按钮时,计算必须显示在"analyze"中。我目前不知道如何进行计算或显示它们。任何指导将不胜感激。

2 个答案:

答案 0 :(得分:2)

您必须实施actionPerformed()方法并检查点击的相应按钮。

 public void actionPerformed(ActionEvent e) {
        if(e.getSource()==addButton) {
                        //do stuff
        }
        else if(e.getSource()==sortButton) {
              // do stuff
        }
        else if(e.getSource()==analyzeButton) {
              // do stuff
        }
    }

答案 1 :(得分:2)

以下是我建议的问题代码...

ArrayList<Integer> marks = new ArrayList<Integer>();

// Called when the user clicks a button
public void actionPerformed(ActionEvent e) {
    Object clickedButton = e.getSource();
    if(clickedButton == addButton) {
        addButtonActionPerformed();
    }
    else if(clickedButton == sortButton) {
        sortButtonActionPerformed();
    }
    else if(clickedButton == analyzeButton) {
        analyzeButtonActionPerformed();
    }
}

 private void addButtonActionPerformed() {
    Collections.addAll(marks, (Integer.parseInt(markInput.getText())));

    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
        text.append(mark.toString()).append('\n');
    }

    markdisplayTextArea.setText(text.toString());
}

 private void sortButtonActionPerformed() {
    Collections.sort(marks);

    StringBuilder text = new StringBuilder();
    for (Integer mark: marks) {
        text.append(mark.toString()).append('\n');
    }

    markdisplayTextArea.setText(text.toString());
}

private void analyzeButtonActionPerformed() {

    String output = "Class average:" + calculateAverage() + "\n" +
                    "Maximum mark:" + calculateMaximum() + "\n" +
                    "Minimum mark:" + calcualteMinimum() + "\n" +
                    "Range of marks:" + calculateRange();

    analyzeTextArea.setText(output);
}

private int calculateAverage(){
    // calculate and return the answer
}

private int calculateMaximum(){
    // calculate and return the answer
    int maximum = 0;
    for (Integer currentMark: marks){
        if (currentMark > maximum){
            maximum = currentMark;
        }
    }
    return maximum;
}

private int calcualteMinimum(){
    // calculate and return the answer
}

private int calculateRange(){
    // calculate and return the answer
}

现在,这些是我的主要变化,也是我制作它们的原因......

  1. 我添加了actionPerformed()方法。如果您还没有这个,它可以让您听取按钮点击。您需要为每个按钮添加一行myButton.addActionListener(this);。您可能还需要更改public class MyClass行以说出public class MyClass implements ActionListener,并添加一行import java.awt.event.*
  2. 我更改了您的analyzeButtonActionPerformed()方法,以便输出您请求的值。现在你需要在最后实现calculate()方法 - 我已经完成了其中一个方法,为你提供了一般性的想法。当您点击analyze按钮时,它应该执行所有4次计算并将答案放在textarea
  3. 为什么不仔细看看我的变化,看看你是否能看到他们应该做的事情。继续实现一些更改和计算方法,看看是否可以使它工作。不要只是复制粘贴我的答案 - 逐位进行一些更改以查看它是如何工作的,并修复出现的任何编译错误。