具有多个ArrayList的基本Java编程
在下面的代码中,我获取了一个包含5个学生姓名的列表,并将它们加载到一个String类型的ArrayList中具有多个ArrayList的基本Java编程,java,arrays,Java,Arrays,在下面的代码中,我获取了一个包含5个学生姓名的列表,并将它们加载到一个String类型的ArrayList中 import java.util.Scanner; import java.util.ArrayList; public class QuizAverage { public static void main( String[] args ) { final int NAMELIMIT = 5 ; final int QUIZLIMIT = 5 ;
import java.util.Scanner;
import java.util.ArrayList;
public class QuizAverage
{
public static void main( String[] args ) {
final int NAMELIMIT = 5 ;
final int QUIZLIMIT = 5 ;
ArrayList<String> sNames = new ArrayList<String>();
ArrayList<String> sFamily = new ArrayList<String>();
Scanner in = new Scanner(System.in);
//Load the 5 names of the students in the arraylist
for(int i = 1; i<=NAMELIMIT; i++)
{
String[] input = in.nextLine().split("\\s+");
sNames.add(input[0]);
sFamily.add(input[1]);
}
System.out.println("Name: ");
System.out.println();
for(int i=0; i<NAMELIMIT; i++)
{
System.out.println("Name: " +sNames.get(i) + " " + sFamily.get(i));
}
System.out.println();
}
}
给出输出
Name: Sally Mae
Name: Charlotte Tea
Name: Oliver Cats
Name: Milo Peet
Name: Gavin Brown
当所需输出为
Name: Sally Mae Quiz Avg: 10.5
Name: Charlotte Tea Quiz Avg: 11.25
Name: Oliver Cats Quiz Avg: 10.95
Name: Milo Peet Quiz Avg: 12.75
Name: Gavin Brown Quiz Avg: 9.6
据我所知,您还没有调用
computerAverage()
。不要使用并行数组。改用学生
课程:
public class Student {
private String name;
private String family;
private List<Integer> marks = new ArrayList<>();
public Student(String name, String family)
{
this.name = name;
this.family = family;
}
// getters, setters
...
public void addMark(int mark)
{
this.marks.add(mark);
}
public void getAverage()
{
... // etc
}
}
公共班级学生{
私有字符串名称;
私弦家庭;
私有列表标记=新的ArrayList();
公立学生(字符串名称、字符串族)
{
this.name=名称;
这个家庭=家庭;
}
//能手,二传手
...
公共无效地址标记(整数标记)
{
此.marks.add(标记);
}
public void getAverage()
{
…//等等
}
}
然后将该类的实例存储在主程序的单个列表中
List<Student> students = new ArrayList<>();
List students=new ArrayList();
正如吉姆所说,你应该把分数和学生的名字存储在同一个班级里。这样做的原因是说,继续前进,你想找到一个名为Raj的特殊学生的分数
在您的实现中,您必须遍历第一个数组来查找名为Raj的人的索引,然后转到marks数组中的同一个索引。如果在初始化第一个数组时没有问题,但是在创建标记数组时出现了一些问题,那么最终可能会得到错误的标记
此外,如果您必须向学生添加新属性,则必须创建一个新数组,然后再添加一个逻辑来读取该数据
通过上课,您可以轻松地将属于某个学生的所有数据分组
对于你的平均问题,我有一个如下的课程
class Student {
private String name;
private Double marks;
public Student(String name, String marks) {
this.name = name;
this.marks = marks;
}
//getters setters
}
Double average = 0;
for(Student student: students) {
average += student.getMarks();
}
average = average / student.size();
有学生名单
List<Student> students = new ArrayList<Student>();
计算平均值如下
class Student {
private String name;
private Double marks;
public Student(String name, String marks) {
this.name = name;
this.marks = marks;
}
//getters setters
}
Double average = 0;
for(Student student: students) {
average += student.getMarks();
}
average = average / student.size();
检查其他方法以获得平均值。这种方法被称为“并行阵列”,是非常糟糕的设计。创建一个
Student
类,该类存储学生的名字、姓氏和成绩列表。@timNorth听Jim Garrison说。我走了这条路,相信我,它不会有好的结局:P
students.add(new Student(name, marks));
Double average = 0;
for(Student student: students) {
average += student.getMarks();
}
average = average / student.size();