2015-08-12 3 views
1

Я пытаюсь сделать программу через GUI, который принимает имя и фамилию студента и четыре тестовые метки. Он должен иметь возможность выводить имена учащихся и их метки, а также вычислять индивидуальные и средние классы.Как мне манипулировать и печатать двумерный массив?

Я создал класс Student и метод updateStudentInfo

public class Student { 
public String firstName; 
public String lastName; 
public ArrayList<Integer> courseMarks; 


public void updateStudentInfo(String first, String last, int test1, int test2, int test3, int test4) { 

    firstName = first; 
    lastName = last; 

    courseMarks = new ArrayList<Integer>(); 

    courseMarks.add(test1); 
    courseMarks.add(test2); 
    courseMarks.add(test3); 
    courseMarks.add(test4); 

} 

Затем графический интерфейс:

public class StudentRecords extends javax.swing.JFrame { 
public ArrayList<Student> studentList = new ArrayList<Student>(); 


private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {          
    Student s = new Student(); 
    s.updateStudentInfo(txtInputFirstName.getText(), txtInputLastName.getText(), new Integer(txtTest1.getText()), 
    new Integer(txtTest2.getText()), new Integer(txtTest3.getText()), new Integer(txtTest4.getText())); 
    studentList.add(s); 

} 

Я не совсем понимаю концепцию использования класса в качестве типа данных. Но мой главный вопрос: как распечатать ArrayList и рассчитать средние значения?

Заранее благодарен!

+0

Вне темы: Любая причина для 'public ArrayList studentList = new ArrayList (); 'позже, пока вы инициализируете его по-другому в классе' Student'? Я предпочитаю более поздний. Поскольку вы также можете добавить ключевое слово «final», убедитесь, что он никогда не заменяется. – Emz

ответ

0

Вы можете начать с переопределения метода toString() в классе «Студент». Когда вы это сделаете, всякий раз, когда вы печатаете объект класса Student, он распечатает его полезным способом, как определено в toString(). Если вы используете IDE, например eclipse или intelliJ, он может генерировать toString() для вас. Вот пример:

@Override 
public String toString() { 
    return "Student [firstName=" + firstName + ", lastName=" + lastName 
      + ", courseMarks=" + courseMarks + "]"; 
} 

Для расчета средних значений, вы можете добавить метод, как это:

float getAverage(){ 
    float sum = 0; 
    for (int i: courseMarks){ 
     sum +=i; 
    } 
    return sum/courseMarks.size();    
} 

и вызывать его из графического интерфейса пользователя, как s.getAverage(), чтобы получить средние оценки за студенты".

+1

Обязательно введите сумму в поплавок перед возвратом или вы будете жертвой целочисленного деления. В качестве альтернативы объявите сумму float. –

+0

Спасибо! Функция toString() работает хорошо. Как я могу получить несколько имен учеников и отметок? Я попытался запустить его через цикл for, но это не похоже на работу. –

+0

@ChinmayeeGidwani Используйте ListIterator. –

Смежные вопросы