我必须制作一个标记程序,显示用户输入的一组标记和一些计算(平均值,最大值,最小值,范围等)。它还应该能够按升序对标记进行排序。我管理(帮助)显示标记并对它们进行排序但是我无法让程序进行计算并显示它们。这是我到目前为止的所有代码:
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"
中。我目前不知道如何进行计算或显示它们。任何指导将不胜感激。
答案 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
}
现在,这些是我的主要变化,也是我制作它们的原因......
actionPerformed()
方法。如果您还没有这个,它可以让您听取按钮点击。您需要为每个按钮添加一行myButton.addActionListener(this);
。您可能还需要更改public class MyClass
行以说出public class MyClass implements ActionListener
,并添加一行import java.awt.event.*
analyzeButtonActionPerformed()
方法,以便输出您请求的值。现在你需要在最后实现calculate()
方法 - 我已经完成了其中一个方法,为你提供了一般性的想法。当您点击analyze
按钮时,它应该执行所有4次计算并将答案放在textarea
。为什么不仔细看看我的变化,看看你是否能看到他们应该做的事情。继续实现一些更改和计算方法,看看是否可以使它工作。不要只是复制粘贴我的答案 - 逐位进行一些更改以查看它是如何工作的,并修复出现的任何编译错误。