The program should do the following to each test score entered: 1. display a cou
ID: 3536245 • Letter: T
Question
The program should do the following to each test score
entered:
1. display a count of the total number of scores
entered,
2. display an average of all test scores entered
3. and display the highest test score entered
You can start new by pressing the clear button, or exit by
pressing the exit button.
Please fix my code so that it does as required. It
currently just keeps the count at "1" and average and best scores
as the entered test score. Thank you.
CODE------------------------------
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
public class TestScores {
public static void main(String args[]) {
//construct the frame
JFrame frame = new TestScoreFrame();
frame.setVisible(true);
}
}
class TestScoreFrame extends JFrame {
public TestScoreFrame() {
//frame properties
setTitle("Test Scores");
setSize(300, 250);
setResizable(false);
setLocationRelativeTo(null); //to center
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//construct the panel
JPanel panel = new TestScoresPanel();
add(panel);
}
}
class TestScoresPanel extends JPanel implements ActionListener
{
//declare buttons, text fields, and labels
private JButton enterScoreBtn, clearBtn, exitBtn;
private JTextField scoreField, numField, averageField,
bestScoreField;
private JLabel scoreLabel, numLabel, averageLabel,
bestScoreLabel;
public TestScoresPanel() {
//set TestScoresPanel Layout
setLayout(new BorderLayout());
//to display panel
JPanel textPanel = new JPanel();
textPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
//labels and such
//--SCORE
scoreLabel = new JLabel("Test score:");
textPanel.add(scoreLabel);
scoreField = new JTextField(10);
scoreField.addActionListener(this);
textPanel.add(scoreField);
//--Num of scores
numLabel = new JLabel("Number of scores:");
textPanel.add(numLabel);
numField = new JTextField(10);
numField.setEditable(false); //to disable
numField.setFocusable(false);
textPanel.add(numField);
//--AVERAGE SCORE
averageLabel = new JLabel("Average score:");
textPanel.add(averageLabel);
averageField = new JTextField(10); //to disable
averageField.setEditable(false);
averageField.setFocusable(false);
textPanel.add(averageField);
//--BEST SCORE
bestScoreLabel = new JLabel("Best score:");
textPanel.add(bestScoreLabel);
bestScoreField = new JTextField(10);
bestScoreField.setEditable(false); //to disable
bestScoreField.setFocusable(false);
textPanel.add(bestScoreField);
//buttons panel
JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
//to display buttons to panel
//-- ENTER BUTTON
enterScoreBtn = new JButton("Enter score");
enterScoreBtn.addActionListener(this);
buttonsPanel.add(enterScoreBtn);
//-- CLEAR BUTTON
clearBtn = new JButton("Clear");
clearBtn.addActionListener(this);
buttonsPanel.add(clearBtn);
//-- EXIT BUTTON
exitBtn = new JButton("Exit");
exitBtn.addActionListener(this);
buttonsPanel.add(exitBtn);
//add panels to the main panel
add(textPanel, BorderLayout.CENTER); //centers
add(buttonsPanel, BorderLayout.SOUTH); //sets under
textPanel
}
//
public void actionPerformed(ActionEvent e) {
double averageScore = 0.0;
int bestScore;
int scores = 0;
int sum = 0;
int count = 0;
Object source = e.getSource();
//if button clicked is enter button:
if(source == enterScoreBtn) {
scores = Integer.parseInt(scoreField.getText());
//retrieves the score entered
count = scoreCount(count);
averageScore = average(scores, count);
numField.setText("" + count);
averageField.setText("" + averageScore);
bestScore = bestScore(scores);
bestScoreField.setText("" + bestScore);
}
//if button clicked is the clear button
else if(source == clearBtn) {
scoreField.setText("");
numField.setText("");
averageField.setText("");
bestScoreField.setText("");
scoreField.requestFocus();
}
//if button clicked is exit button
else if (source == exitBtn) {
System.exit(0);
}
}
//----------------KEEP TRACK OF SCORE
COUNT-------------------------------------------------------
public static int scoreCount(int scores) {
int[] scoreArray;
int count = 0;
if (scores >= 0) {
int i = 0;
i = i++;
scoreArray = new int[scores];
for(int j = 0; j <= scorearray="" length="" j="" p="">
count++;
}
}
return count;
}
//-----------------------KEEP TRACK OF AVERAGE
SCORE------------------------------------------------
public static double average(int scores, int count) {
double average = 0.0;
int sum = 0;
sum = sum + scores;
average = sum / count;
return average;
}
//--------------------KEEP TRACK OF BEST
SCORE---------------------------------------------------
public static int bestScore(int scores) {
int best = 0;
if (scores > best){
best = scores;
}
return best;
}
}
Explanation / Answer
//here is the modified version of your code,which is giving output according to your requirenment
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestScores {
public static void main(String args[]) {
//construct the frame
JFrame frame = new TestScoreFrame();
frame.setVisible(true);
}
}
class TestScoreFrame extends JFrame {
public TestScoreFrame() {
//frame properties
setTitle("Test Scores");
setSize(300, 250);
setResizable(false);
setLocationRelativeTo(null); //to center
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//construct the panel
JPanel panel = new TestScoresPanel();
add(panel);
}
}
class TestScoresPanel extends JPanel implements ActionListener
{
static int count=0;
static double average = 0.0;
static int best = 0;
//declare buttons, text fields, and labels
private JButton enterScoreBtn, clearBtn, exitBtn;
private JTextField scoreField, numField, averageField,
bestScoreField;
private JLabel scoreLabel, numLabel, averageLabel,
bestScoreLabel;
public TestScoresPanel() {
//set TestScoresPanel Layout
setLayout(new BorderLayout());
//to display panel
JPanel textPanel = new JPanel();
textPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
//labels and such
//--SCORE
scoreLabel = new JLabel("Test score:");
textPanel.add(scoreLabel);
scoreField = new JTextField(10);
scoreField.addActionListener(this);
textPanel.add(scoreField);
//--Num of scores
numLabel = new JLabel("Number of scores:");
textPanel.add(numLabel);
numField = new JTextField(10);
numField.setEditable(false); //to disable
numField.setFocusable(false);
textPanel.add(numField);
//--AVERAGE SCORE
averageLabel = new JLabel("Average score:");
textPanel.add(averageLabel);
averageField = new JTextField(10); //to disable
averageField.setEditable(false);
averageField.setFocusable(false);
textPanel.add(averageField);
//--BEST SCORE
bestScoreLabel = new JLabel("Best score:");
textPanel.add(bestScoreLabel);
bestScoreField = new JTextField(10);
bestScoreField.setEditable(false); //to disable
bestScoreField.setFocusable(false);
textPanel.add(bestScoreField);
//buttons panel
JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
//to display buttons to panel
//-- ENTER BUTTON
enterScoreBtn = new JButton("Enter score");
enterScoreBtn.addActionListener(this);
buttonsPanel.add(enterScoreBtn);
//-- CLEAR BUTTON
clearBtn = new JButton("Clear");
clearBtn.addActionListener(this);
buttonsPanel.add(clearBtn);
//-- EXIT BUTTON
exitBtn = new JButton("Exit");
exitBtn.addActionListener(this);
buttonsPanel.add(exitBtn);
//add panels to the main panel
add(textPanel, BorderLayout.CENTER); //centers
add(buttonsPanel, BorderLayout.SOUTH); //sets under
}
//
public void actionPerformed(ActionEvent e) {
double averageScore = 0.0;
int scores = 0;
int bestScores=0;
Object source = e.getSource();
//if button clicked is enter button:
if(source == enterScoreBtn) {
scores = Integer.parseInt(scoreField.getText());
//retrieves the score entered
count = scoreCount(count);
//averageScore = average(scores, count);
numField.setText("" + count);
averageScore=average(scores,count);
averageField.setText("" + Double.toString(averageScore));
bestScores= bestScore(scores);
bestScoreField.setText("" + bestScores);
}
//if button clicked is the clear button
else if(source == clearBtn) {
scoreField.setText("");
numField.setText("");
averageField.setText("");
bestScoreField.setText("");
scoreField.requestFocus();
count=0;
average=0.0;
best=0;
}
//if button clicked is exit button
else if (source == exitBtn) {
System.exit(0);
}
}
//----------------KEEP TRACK OF SCORE
//COUNT-------------------------------------------------------
public static int scoreCount(int scores) {
if (scores >= 0)
count++;
return count;
}
//-----------------------KEEP TRACK OF AVERAGE
//SCORE------------------------------------------------
public static double average(int scores,int count) {
average=average+scores;
return (double)(average/count);
}
//--------------------KEEP TRACK OF BEST
//SCORE---------------------------------------------------
public static int bestScore(int scores) {
if (scores > best){
best = scores;
}
return best;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.