首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在二维数组中分离不同的值

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

Stack Overflow用户
提问于 2019-10-14 06:53:26
回答 3查看 71关注 0票数 0

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

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

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

txt文件中的原始数据:

GSteve23生物学

朱莉娅19岁音乐长笛:大二

G David 25数学

我能够阅读和打印对象,但只能按原始顺序:

研究生名称:Steve,年龄: 23岁,主修:生物学

本科名称:朱莉娅,年龄: 19岁,主修:音乐,大二

研究生名称: Dvid,年龄: 25岁,主修:数学

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

代码语言:javascript
复制
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());
}

===期望result:===

本科生人数:1

姓名:朱莉娅,年龄: 19,主修:音乐,大二

研究生人数:2

姓名:Steve,年龄: 23岁,主修:生物学

姓名:Dvid,年龄: 25,主修:数学

===

这是我的第一个问题。我对这个系统不熟悉。我试着使我的问题更容易理解。如果看起来乱七八糟的话。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-14 07:04:49

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

代码语言:javascript
复制
if (s instanceof Undergraduate){
   Undergraduate u = (Undergraduate) s;
}

您可以迭代您的列表,并使用instanceof计数您的表。您也可以在输入过程中进行上述检查。

票数 0
EN

Stack Overflow用户

发布于 2019-10-14 07:17:03

最简单的方法是创建两个独立的ArrayLists:一个是本科生,另一个是研究生:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-10-14 07:05:39

代码语言:javascript
复制
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

为了你的预期结果

代码语言:javascript
复制
 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());
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58371462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档