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