如何在二维数组中分离不同的值

时间:2019-10-14 06:53:26

标签: java arrays multidimensional-array

该数组具有来自不同子类的对象。如何根据那里的子类打印对象?

我用扫描仪读取学生(研究生和本科生)的对象,并放入一个数组中。

我需要使用继承和toString方法来获取结果。


txt文件中的原始数据:

G史蒂夫23生物学

U Julia 19音乐长笛,二年级:

G David 25数学


我只能按原始顺序读取和打印对象:

毕业生姓名:Steve,年龄:23​​岁,专业:生物学

本科生姓名:朱莉娅(Julia),年龄:19岁,专业:音乐,年份:大二。

毕业生姓名:Dvid,年龄:25,专业:数学

下面是我在测试器文件中使用的方法:


ArrayList<Student> studentList = new ArrayList<>();
Student s = new Undergraduate(type,name,age,major,year);
studentList.add(s);
Student s = new Graduate(type,name,age, major);
studentList.add(s);

for (Student d:studentList) {
System.out.println(d.toString());
}

=== 预期结果:===

本科生人数:1

姓名:朱莉娅,年龄:19,专业:音乐,年:大二。


研究生人数:2

姓名:Steve,年龄:23​​岁,专业:生物学

姓名:Dvid,年龄:25岁,专业:数学

===

这是我的第一个问题。我对系统不熟悉。我试图使我的问题更容易阅读。抱歉,如果看起来很乱。

3 个答案:

答案 0 :(得分:1)

最简单的方法是创建两个单独的ArrayList:一个用于本科生,一个用于研究生:

ArrayList<Student> undGrdStudentList = new ArrayList<>();
ArrayList<Student> grdStudentList = new ArrayList<>();
if ("U".equals(type)){
  Student s = new Undergraduate(type,name,major);
  undGrdStudentList.add(s);
}else{
  Student s = new Graduate(type,name,major);
  grdStudentList .add(s);
}

System.out.println("Number of Undergraduate Students: " + undGrdStudentList.size());
for (Student d:undGrdStudentList) {
  System.out.println(d.toString());
}

System.out.println("Number of Graduate Students: " + grdStudentList .size());
for (Student d:grdStudentList ) {
  System.out.println(d.toString());
}

类似的东西

答案 1 :(得分:0)

您可以使用instanceof分隔不同类型的对象。 例如。

if (s instanceof Undergraduate){
   Undergraduate u = (Undergraduate) s;
}

您可以使用instanceof迭代列表并计算目标数。 您也可以在输入期间进行上述检查。

答案 2 :(得分:0)

Triple<String,Integer,String> student;
List<Triple<String,Integer,String>> UstudentList = new ArrayList<>();
student = new MutableTriple<>("jin",23,"biology");
UstudentList.add(student);
List<Triple<String,Integer,String>> GstudentList = new ArrayList<>();
student = new MutableTriple<>("amol",23,"music");
GstudentList.add(student);

三类来自org.apache.commons.lang3.tuple.Triple

达到预期效果

 System.out.println("No. of Undergraduate: "+UstudentList.size())
for (Triple<String,Integer,String> stud: UstudentList) {
            System.out.println(stud.getLeft()+stud.getMiddle()+stud.getRight());
        }
 System.out.println("No. of Graduate: "+GstudentList.size())
for (Triple<String,Integer,String> stud: GstudentList) {
            System.out.println(stud.getLeft()+stud.getMiddle()+stud.getRight());
        }