该程序包含

Person类:

属性:String name,boolean gender String birthdate。

构造方法:

  • 无参构造方法(初始化名字为空字符串,gender为false)
  • 两个参数的构造方法(name,gender)
  • 三个参数的构造方法(name,gender,birthdate)

方法:getter/setter方法。

自定义接口Judgeable

方法:boolean judge(String)

静态方法:int countPerson(List,Judgeable):实现判断List集合中符合Judge方法的集合元素,并返回其个数

main类:

静态方法:int countPerson(List,Judgeable),功能为调用List集合中所有元素的judge方法,并统计其中返回true的元素个数。

main方法:

定义一个Person类集合,输入个数n,在下面依次输入n行的name,gender,biryhDate值生成person对象并添加进集合。

判断集合中name长度为5的数的个数,并输出,具体格式见输出样例。

判断集合中name长度为7的数的个数,并输出,具体格式见输出样例。

判断集合中name为空的个数,并输出,具体格式见输出样例。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;class Person {String name;boolean gender;String birthdate;Person(){this.name = "null";this.birthdate = "";gender = false;}Person(String name, boolean gender){this.name = name;this.gender = gender;}Person(String name, boolean gender, String birthdate){this.name = name;this.gender = gender;this.birthdate = birthdate;}public void setName(String name) {this.name = name;}public void setBirthdate(String birthdate) {this.birthdate = birthdate;}public void setGender(boolean gender) {this.gender = gender;}public String getName() {return name;}public String getBirthdate() {return birthdate;}public boolean isGender() {return gender;}
}interface Judgeable{boolean judge(String s);static int countPerson(List<Person> personList, Judgeable judger){return 0;}
}//在这里给出Judgeable接口的定义,入参为String,返回boolean。public class Main {public static int countPerson(List<Person> personList, Judgeable judger) {int n = 0;for (Person person : personList) {if (judger.judge(person.getName()))n++;}return n;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);List<Person> personList = new ArrayList<Person>();String name;boolean gender;String  birthDate;//在这里输入个数int num = sc.nextInt();//循环创建person对象存入personList最后for(int i = 1; i <= num; i++){name = sc.next();gender = sc.next()=="true"?true:false;birthDate = sc.next();Person p = new Person(name, gender, birthDate);personList.add(p);}//注意:当name输入为null时,将其置为空int nameLength5 = countPerson(personList, new Judgeable() {//Judgeable的实现代码@Overridepublic boolean judge(String s) {return s.length() == 5;}});System.out.println("Number of person with nameLength == 5:"+nameLength5);int nameLength7 = countPerson(personList, new Judgeable() {//Judgeable的实现代码@Overridepublic boolean judge(String s) {return s.length() == 7;}});System.out.println("Number of person with nameLength == 7:"+nameLength7);int nameisnull = countPerson(personList, new Judgeable() {//Judgeable的实现代码@Overridepublic boolean judge(String s) {return s.equals("null");}});System.out.println("Number of person with null name:"+nameisnull);}
}

PTA 7-5 jmu-java-m05-自定义Judgeable接口 (10 分) JAVA相关推荐

  1. 深受Java程序员欢迎的10款Java IDE

    概述:Java是全世界最受欢迎的一门程序语言,它被广泛的应用于企业项目.游戏设计.安卓应用程序等开发领域.以下的列表是整理的近些年来深受Java程序员欢迎的10款Java IDE. Java是全世界最 ...

  2. 7-5 两点成线 (10 分) JAVA PTA

    7-5 两点成线 (10 分) 都说两点确定一条直线,那么设计一个直线类Line,需要通过两个点Point对象来确定.Line类具体要求如下: 1)定义两个Point对象p1,p2: 2)写出有参构造 ...

  3. 【Java工具类】(10)—java中给图片添加水印

    Java工具类(10)-java中给图片添加水印 1.工具类 package util;import javax.imageio.ImageIO; import java.awt.*; import ...

  4. 6-2 返回月份的英文全称(日历) (10分) java pta

    本题要求实现一个方法,用户输入一个1到12的整数,方法返回该数字代表月份的英文全称. 函数接口定义: 详见主函数中的调用. 裁判测试程序样例: 在这里给出函数被调用进行测试的例子.例如: import ...

  5. PTA 7-7 sdut-oop-6 计算各种图形的周长(接口与多态) (10 分) JAVA

    定义接口Shape,定义求周长的方法length(). 定义如下类实现接口Shape的抽象方法: (1)三角形类Triangle (2)长方形类Rectangle (3)圆形类Circle等. 定义测 ...

  6. 6-4 计算长方体的表面积和体积 (10分) java pta

    请完成相关代码,实现长方体的表面积和体积的计算 函数接口定义: 请详细参见主程序的调用方式. 裁判测试程序样例: import java.util.Scanner; /* 你的代码将被嵌入到这里 */ ...

  7. PTA 7-3 sdut-sel-while-1 社会主义核心价值观之理解与输出 (10 分) java AC题解

    社会主义核心价值观是社会主义核心价值体系的内核. 党的十八大提出,倡导富强.民主.文明.和谐,倡导自由.平等.公正.法治,倡导爱国.敬业.诚信.友善,积极培育和践行社会主义核心价值观. 富强.民主.文 ...

  8. 7-17 打印等腰直角三角形 (10分) java pta

    等腰直角三角形是指一个角是直角,且两条直角边相等的三角形.这里我们输出直角边长为n的等腰直角三角形. 输入格式: 大于0的整数. 输出格式: 输出对应的用*表示的等腰直角三角形 输入样例: 在这里给出 ...

  9. 7-8 毕业聚会 (10分) java pta

    毕业在即,三位小伙伴马上要分别.为了在未来的某个日子可以见面,三位小伙伴有了一个约定,假设在未来的某一年,三位小伙伴的年龄的末尾正好出现3.6.9三个数,那么他们会再次相聚. 现在问题来了,假设今年三 ...

  10. Java深海拾遗系列(10)--- Java并发之AQS源码分析

    AQS 全称是 AbstractQueuedSynchronizer,顾名思义,是一个用来构建锁和同步器的框架,它底层用了 CAS 技术来保证操作的原子性,同时利用 FIFO 队列实现线程间的锁竞争, ...

最新文章

  1. LoRDEC:hybrid correction of long reads 长读的混合校正
  2. 图灵四月书讯 ——经典与技术前沿的融合
  3. 风之语.甲骨文裁员之我见
  4. 连连看java代码_连连看 - java代码库 - 云代码
  5. ppc上的DataGrid运用 (C#)(版本1.2)
  6. nodejs后台系列--第五篇-购买云服务器,安装宝塔面板
  7. 实对称矩阵的特征值求法_线性代数之实对称矩阵得相似对角化问题的方法总结...
  8. 二维码扫一扫java开发
  9. 科目二考试之侧方位停车步骤
  10. vim中实现大小写转换
  11. iPhone之手势切换图片
  12. sv编程语言_sv零星知识点
  13. Xposed获取微信个人信息
  14. win10时间不准_【装机教程】超详细WIN10系统安装教程,官方ISO直装与PE两种方法教程...
  15. Keras的BN你真的冻结对了吗
  16. 谷歌施密特:中国人相当出色2025年将超美国成AI主导丨业界大佬财报频出【软件网每日新闻播报│第11-3期】
  17. 弘辽科技:淘宝开店后怎么建群?手机端怎么建群?
  18. android 电池容量修改,Android 使用adb查看和修改电池信息
  19. 网站白名单可行性分析
  20. 一个新开端,存储服务器再添骨灰级玩家

热门文章

  1. Git入门——tortoisegit使用问题:git不显示图标?
  2. win远程桌面连接服务器,远程桌面连接windows服务器
  3. 软件工程阶段性总结(一)——概述
  4. numpy.median
  5. 4.1.14 Flink-流处理框架-Flink流处理API之数据重分区操作
  6. java 拟合曲线_关于java实现自定义曲线拟合的研究
  7. 小白聊智慧制造之二:智能制造的体系架构
  8. 人类迁徙计划 (feat.译者补完篇)
  9. android绑定交通卡,【NFC-SIM卡刷公交教程】支持安卓8.0(3月23日更新)
  10. 北大中文核心期刊目录(2004年版)工业技术类