-1

ユーザーが入力した一連のマークといくつかの計算 (平均、最大、最小、範囲など) を表示するマーク プログラムを作成する必要があります。また、マークを昇順にソートできる必要があります。私は(助けを借りて)マークを表示して並べ替えることができましたが、プログラムに計算を実行させて表示させることはできません。これは私がこれまでに持っているすべてのコードです:

 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"現在、計算の実行方法や表示方法がわかりません。任意のガイダンスをいただければ幸いです。

4

2 に答える 2

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
        }
    }
于 2012-05-28T04:17:06.000 に答える
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おそらく、行を sayに変更し、行をpublic class MyClass implements ActionListener追加する必要もあります。import java.awt.event.*
  2. analyzeButtonActionPerformed()リクエストした値を出力するようにメソッドを変更しました。次に、最後にメソッドを実装する必要がありcalculate()ます。一般的なアイデアを提供するために、そのうちの 1 つを実行しました。ボタンをクリックするanalyzeと、4 つの計算がすべて実行され、答えが に入力されますtextarea

私の変更を少し見て、彼らが何をしているのかわかるかどうか見てみませんか。いくつかの変更と計算メソッドを実装してみて、それが機能するかどうかを確認してください。私の答えをコピーして貼り付けるだけではなく、少しずつ変更を加えてすべてがどのように機能するかを確認し、コンパイルエラーが表示されたら修正してください。

于 2012-05-28T13:46:18.693 に答える