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

Please what is wrong with the below. It\'s asking about list and won\'t compile

ID: 3771765 • Letter: P

Question

Please what is wrong with the below. It's asking about list and won't compile

package testscoregui;

import java.util.ArrayList;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.scene.layout.HBox;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.TextField;

public class TestScoreGUI extends Application {
    private final TextField tfEnterScore = new TextField();
    private final TextField tfNumberOfScores = new TextField();
    private final TextField tfAverageScore = new TextField();
    private final TextField tfBestScore = new TextField();
    
    @Override // override the start method in the application class
    public void start(Stage primaryStage) {
        
        //Create user interface
        // Create gridpane and add textfields
        GridPane pane = new GridPane();
        pane.setHgap(5);
        pane.setVgap(5);
        pane.add(new Label("Enter score:"), 0, 0);
        pane.add(tfEnterScore, 1, 0);
        pane.add(new Label("Number of scores:"), 0, 1);
        pane.add(tfNumberOfScores, 1, 1);
        pane.add(new Label("Average score:"), 0, 2);
        pane.add(tfAverageScore, 1, 2);
        pane.add(new Label("Best score:"), 0, 3);
        pane.add(tfBestScore, 1, 3);
        
        // set properties for gridpane
        pane.setAlignment(Pos.CENTER);
        tfEnterScore.setAlignment(Pos.BOTTOM_RIGHT);
        tfNumberOfScores.setAlignment(Pos.BOTTOM_RIGHT);
        tfAverageScore.setAlignment(Pos.BOTTOM_RIGHT);
        tfBestScore.setAlignment(Pos.BOTTOM_RIGHT);
        tfNumberOfScores.setEditable(false);
        tfAverageScore.setEditable(false);
        tfBestScore.setEditable(false);       
        
        // Create four buttons
        HBox hBox = new HBox(5);
        hBox.setSpacing(10);
        hBox.setAlignment(Pos.CENTER);
        hBox.setPadding(new Insets(5));
        Button btEnterScore = new Button("Enter score");
        Button btClear = new Button("Clear");
        Button btExit = new Button("Exit");
        hBox.getChildren().addAll(btEnterScore, btClear, btExit);
        
        // Create borderpane and align hbox and pane in
        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(pane);
        borderPane.setBottom(hBox);
        
        // Create a scene and place borderpane in the stage
        Scene scene = new Scene(borderPane, 300, 200);
        primaryStage.setTitle("Test Scores");
        primaryStage.setScene(scene);
        primaryStage.show();
        
        
        btEnterScore.setOnAction(( ActionEvent e) -> {
    
       
        // Create array to store scores as elements
        double score;
        score = Double.parseDouble(tfEnterScore.getText());
        ArrayList<Integer> list = new ArrayList<>();
            for(int i = 1; i <= score; i++)
                list.add(i);
        double sum = 0;
        for (int i = 0 ; i < list.size(); i++)
            sum += list(i);
        
            // Display results
        tfNumberOfScores.setText(String.format("", list.size()));
        tfAverageScore.setText(String.format("", sum / list.size()));
        tfBestScore.setText(String.format("", java.util.Collections.max(list)));
        });
                
        btClear.setOnAction(e -> {
           //list.clear();
        });
        
        btExit.setOnAction(e -> {
            System.exit(0);
        });
    }

    
    public static void main(String[] args) {
        Application.launch(args);
    }
    
}

Explanation / Answer

list is an ArrayList so its element cannot be retrieved using list(i) (Java will look for method list()), Use its get(int index) method to reteieve an element from the list.

Use

sum += list.get(i); instead of    sum += list(i);   in line 81

Full Updated Code

package testscoregui;

import java.util.ArrayList;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import javafx.scene.layout.HBox;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.TextField;

public class TestScoreGUI extends Application {
private final TextField tfEnterScore = new TextField();
private final TextField tfNumberOfScores = new TextField();
private final TextField tfAverageScore = new TextField();
private final TextField tfBestScore = new TextField();
  
@Override // override the start method in the application class
public void start(Stage primaryStage) {
  
//Create user interface
// Create gridpane and add textfields
GridPane pane = new GridPane();
pane.setHgap(5);
pane.setVgap(5);
pane.add(new Label("Enter score:"), 0, 0);
pane.add(tfEnterScore, 1, 0);
pane.add(new Label("Number of scores:"), 0, 1);
pane.add(tfNumberOfScores, 1, 1);
pane.add(new Label("Average score:"), 0, 2);
pane.add(tfAverageScore, 1, 2);
pane.add(new Label("Best score:"), 0, 3);
pane.add(tfBestScore, 1, 3);
  
// set properties for gridpane
pane.setAlignment(Pos.CENTER);
tfEnterScore.setAlignment(Pos.BOTTOM_RIGHT);
tfNumberOfScores.setAlignment(Pos.BOTTOM_RIGHT);
tfAverageScore.setAlignment(Pos.BOTTOM_RIGHT);
tfBestScore.setAlignment(Pos.BOTTOM_RIGHT);
tfNumberOfScores.setEditable(false);
tfAverageScore.setEditable(false);
tfBestScore.setEditable(false);   
  
// Create four buttons
HBox hBox = new HBox(5);
hBox.setSpacing(10);
hBox.setAlignment(Pos.CENTER);
hBox.setPadding(new Insets(5));
Button btEnterScore = new Button("Enter score");
Button btClear = new Button("Clear");
Button btExit = new Button("Exit");
hBox.getChildren().addAll(btEnterScore, btClear, btExit);
  
// Create borderpane and align hbox and pane in
BorderPane borderPane = new BorderPane();
borderPane.setCenter(pane);
borderPane.setBottom(hBox);
  
// Create a scene and place borderpane in the stage
Scene scene = new Scene(borderPane, 300, 200);
primaryStage.setTitle("Test Scores");
primaryStage.setScene(scene);
primaryStage.show();
  
ArrayList<Integer> list = new ArrayList<>();
btEnterScore.setOnAction(( ActionEvent e) -> {
  

// Create array to store scores as elements
double score;
score = Double.parseDouble(tfEnterScore.getText());
  
for(int i = 1; i <= score; i++)
list.add(i);
double sum = 0;
for (int i = 0 ; i < list.size(); i++)
sum += list.get(i);
  
// Display results
tfNumberOfScores.setText(String.format("", list.size()));
tfAverageScore.setText(String.format("", sum / list.size()));
tfBestScore.setText(String.format("", java.util.Collections.max(list)));
});
  
btClear.setOnAction(e -> {
list.clear();
});
  
btExit.setOnAction(e -> {
System.exit(0);
});
}

  
public static void main(String[] args) {
Application.launch(args);
}
  
}