GradeBook Programma Java. Aiuto chiamando classe?


L'assegnazione va come segue.

Un insegnante ha cinque studenti che hanno sostenuto quattro test. L'insegnante utilizza la seguente scala di grado per assegnare un voto lettera a uno studente, in base alla media dei suoi quattro punteggi dei test.

90-100:  A
80-79:  B
70-79:  C
60-69:  D
0-59:  F

Scrivi una classe che utilizza un array di stringhe su un oggetto arraylist per contenere i nomi dei cinque studenti, un array di cinque caratteri per contenere i voti delle lettere dei cinque studenti e cinque array di quattro doppi ciascuno per contenere il set di test di ogni studente Punteggio. La classe dovrebbe avere metodi che restituiscono il nome di uno studente, il punteggio medio del test e un grado di lettera basato sulla media.

Dimostrare la classe in un programma che permette all'utente di inserire il nome di ogni studente e i suoi quattro punteggi dei test. Dovrebbe quindi visualizzare il punteggio medio del test di ogni studente e il grado di lettera.

Il programma non deve accettare un punteggio inferiore a 0 o superiore a 100

Il seguente codice è qui:

Studente classe:

public class Student{
    private String name;
    private double[] test = new double[4];


    public Student(){
        name = " ";
    }

    public Student(String n, double[] t){
        name = n;
        test = t;
    }

    public void setName(String n)
    {
        name = n;
    }

    public String getName(){
        return name;
    }

    public void setTest(double t,int i)
    {
        test[i] = t;
    }

    public double getTest(int i)
    {
        return test[i];
    }


    public double getTestAvg(){

        double sum = 0;
        double avg;
        for(int i = 0; i < test.length; i++)
        {
            sum += test[i];
        }
         avg = sum / test.length;
         return avg;
    }

    public char getLetterGrade(){

        double average = getTestAvg();
        char grade=0;

        if(average >= 90)
            grade = 'A';
        else if (average >= 80)
            grade = 'B';
        else if (average >= 70)
            grade = 'C';
        else if (average >=60)
            grade = 'D';
        else if (average < 60)
            grade = 'F';

        return grade;
    }

    public String toString(){
        String str = "";
        str += "\nName of student: " + name;
        str += "\nAverage test score: " + getTestAvg();
        str += "\nLetter grade: " + getLetterGrade();
        return str;
    }
}       

Il programma principale:

import java.util.Scanner;
import java.io.*;

public class GradeBook {

    public static void main(String[] args) throws IOException {

        Student[] students = new Student[5];

        getStudentData(students);

    }

    public static double getStudentData(Student[] array) {
        Scanner scan = new Scanner(System.in);
        String[] student = new String[5];
        double[] test = new double[4];
        for (int i = 0; i < student.length; i++) {
            System.out.println("Enter the name of the student : ");
            student[i] = scan.nextLine();
            for (int j = 0; j < test.length; j++) {
                System.out.println("Enter score " + (j + 1) + " for the student");
                test[j] = scan.nextDouble();
                scan.nextLine();
            }
            array[i] = new Student(student[i], test);

        }
        return 0;

    }
}

Il problema è che posso inserire tutte le informazioni, ma non verrà visualizzato nulla dopo che tutti i numeri sono stati inseriti. Qualsiasi aiuto sarebbe molto apprezzato!

Author: afzalex, 2014-11-12

1 answers

Non viene visualizzato nulla perché non si effettua mai la chiamata per visualizzare nulla. Stai popolando l '"array", quindi devi scorrere su di esso ora.

Dopo il ciclo for esterno (il primo), ti consigliamo di scorrere l'array popolato e stampare gli oggetti student. Questo funzionerà poiché hai già un metodo toString ().

Ex:

for(Student student : array)
{
    System.out.println(student);
}
 4
Author: Ben Minton, 2014-11-12 22:14:59