Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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;

}



}