Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何操作和打印二维阵列列表?_Java_Arraylist - Fatal编程技术网

Java 如何操作和打印二维阵列列表?

Java 如何操作和打印二维阵列列表?,java,arraylist,Java,Arraylist,我试图通过GUI制作一个程序,该程序接受学生的名字和姓氏,以及四个测试分数。它应该能够输出学生的姓名和分数,以及计算个人和班级平均分 我创建了一个类Student和方法updateStudentInfo public class Student { public String firstName; public String lastName; public ArrayList<Integer> courseMarks; public void updateStudentInfo

我试图通过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);

}
公共班级学生{
公共字符串名;
公共字符串lastName;
公共ArrayList课程标志;
public void updateStudentInfo(字符串第一,字符串最后,int test1,int test2,int test3,int test4){
firstName=first;
lastName=last;
courseMarks=newArrayList();
courseMarks.add(test1);
courseMarks.add(test2);
courseMarks.add(test3);
courseMarks.add(test4);
}
然后GUI:

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);

}   
公共类StudentRecords扩展了javax.swing.JFrame{
public ArrayList studentList=new ArrayList();
私有void btnAddActionPerformed(java.awt.event.ActionEvent evt){
学生s=新学生();
s、 updateStudentInfo(txtInputFirstName.getText()、txtInputLastName.getText()、新整数(txtTest1.getText()),
新整数(txtTest2.getText()),新整数(txtTest3.getText()),新整数(txtTest4.getText());
学生名单。添加;
}   
我不完全理解将类用作数据类型的概念,但我的主要问题是,如何打印ArrayList并计算平均值


提前感谢!

您可以从重写“Student”类中的toString()方法开始。一旦您这样做,每当您打印Student类的对象时,它都会以toString()中定义的有用方式打印出来。如果您使用的是eclipse或intelliJ等IDE,它可以为您生成一个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();              
}

并从GUI中调用它作为s.getAverage(),以获得学生的平均分数。

您可以从覆盖“学生”类中的toString()方法开始。一旦这样做,每当您打印学生类的对象时,它都会以toString()中定义的有用方式打印出来。如果您使用的是eclipse或intelliJ之类的IDE,它可以为您生成一个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();              
}

并从GUI中将其称为s.getAverage(),以获取学生的平均分数。

主题外:是否有任何原因导致
public ArrayList studentList=new ArrayList()
稍后,当您在
学生
类中以不同方式初始化它时?我更喜欢后一个。因为您也可以在那里添加
final
关键字,确保它永远不会被替换。离题:是否有
public ArrayList studentList=new ArrayList()的原因
稍后,当您在
学生
课程中以不同方式初始化它时?我更喜欢后一个。因为您也可以在那里添加
final
关键字,确保它永远不会被替换。请确保在返回之前将sum强制转换为float,否则您将成为整数除法的受害者。或者,将sum声明为float。谢谢字符串()很好。但是如何显示多个学生姓名和分数?我尝试通过for循环运行它,但似乎不起作用。@ChinmayeeGidwani使用ListIterator@ChinmayeeGidwani或a for each。请确保在返回之前将sum强制转换为float,否则您将成为整数除法的受害者。或者,将sum声明为float。谢谢toString()工作得很好。但如何显示多个学生姓名和分数?我尝试通过for循环运行它,但似乎不起作用。@chinmayegidwani使用列表迭代器。@chinmayegidwani或a for each。