user3064572
user3064572

Reputation: 1

Print students in an array

I am trying to have the user type in the last name and first name of a student in an array so that I can call the student information and use it in a grade book.

The Student class has a method called Student(String last_name, String first_name)

I cannot figure out how to make it print students in a list such as:

last name, first name
last name, first name

Here is my program so far:

public static void main (String[] args)
{
    System.out.println("--------------------------------");
    System.out.println("Welcome to the Gradebook Program");
    System.out.println("--------------------------------");
    System.out.println();

    students = GetNumberOfStudents();

    //Allocate space for student information
    Student student[] = new Student[students];

    for (int i = 0; i < students; i++)
    {
        System.out.println("Student #" + (i+1));

        System.out.print("\tEnter last name: ");
        student[i] = scan.nextLine();
        System.out.print("\tEnter first name: ");
        student[i] = scan.nextLine();
    }

    System.out.println(student[i]);

Upvotes: 0

Views: 2447

Answers (2)

kai
kai

Reputation: 6887

Here is a soltuion with a student class which looks like in your description.

package test; //change to your package name

import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Student{

    private String m_LastName;
    private String m_FirstName;
    private int[] TestScores = new int[3];

    //Constructor
    public Student(String last, String first) {
        m_LastName = last;
        m_FirstName = first;
    }

    //returns firstname
    public String firstName() {
        return m_FirstName;
    }

    //returns lastname
    public String lastName() {
        return m_LastName;
    }

    //set a test score at a given index
    public void setTestScore(int index, int score) {
        TestScores[index] = score;
    }

    //returns test score at a given index
    public int testScore(int index) {
        return TestScores[index];
    }

    //returns testscores average
    public double testAverage() {
        int sum = 0;
        for(int i = 0; i<TestScores.length; i++) {
            sum += TestScores[i];
        }
        return sum/TestScores.length;
    }

    //returns students highest test score
    public int maxTestScore() {
        //sort the array
        for(int i = 0; i<TestScores.length; i++) {
            for(int j = 0; j<TestScores.length; j++) {
                if(TestScores[i]<TestScores[j]) {
                    int buffer;
                    buffer = TestScores[i];
                    TestScores[i] = TestScores[j];
                    TestScores[j] = buffer;
                }   
            }
        }
        return TestScores[TestScores.length-1];
    }


    public boolean isPassing() {
        //TODO: when hes passing?
        return true;
    }




    public static void main (String[] args)
    {
        Scanner scan = new Scanner(new InputStreamReader(System.in));

        System.out.println("--------------------------------");
        System.out.println("Welcome to the Gradebook Program");
        System.out.println("--------------------------------");
        System.out.println();

        /**
         * dont know where you declare the students variable
         * and how the getnumberofstudents function looks like
         * 
         * students = GetNumberOfStudents();  
         */  
        int students = 1;

        List<Student> StudentList = new ArrayList<>();   //creat a list which can store student objects

        for (int i = 0; i < students; i++)
        {

            System.out.println("Student #" + (i+1));

            System.out.print("\tEnter last name: ");
            String lastname = scan.nextLine();        //store lastname in a variable 
            System.out.print("\tEnter first name: ");
            String firstname = scan.nextLine();       //store firstname in a variable 

            Student student = new Student(lastname, firstname);  //creat new student object with the last and firstname
            StudentList.add(student);                            //add it to the student list
        }


        //print out all students first and lastnames. here you can add the other data you want to print.
        for (int i = 0; i < students; i++)
        {
            System.out.println("List of all Students:");
            System.out.println("Firstname:"+StudentList.get(i).firstName()+" Lastname:"+StudentList.get(i).lastName());
        }
    }

}

Upvotes: 0

Mex
Mex

Reputation: 508

I expect we would need to see the definition of Student, you have given the constructor but not the getters/setters.

I would expect the printing code to look something like

for (Student s : student) {
    System.out.println(s.getLastName() + "," + s.getFirstName());
}

You are also not initialising your Student objects correctly. Inside the loop you have written I would expect to see

new Student(lastname, firstname);

Upvotes: 1

Related Questions