ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
**第一题:** 输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。 提示: 对比char字符在ASK码的范围,就可以确定它符号的类别 char字符ASK码的范围 * 数字0到9: 48~57 * 字母A到Z:65到90 a到z:97到122 * 空格是32 如: ~~~ char a = 'a'; 97<= a <=122 ~~~ 答: ~~~java public class Client { public Map<String, Integer> getCharNumber(String str) { int num = 0,letter = 0,space = 0,other = 0;//变量的共同定义,表示这四个变量都是int类型 Map<String,Integer> map = new HashMap<String, Integer>(); if(str != null && str.length() > 0) { char[] charArray = str.toCharArray();//将字符串分割为char数组 for(char cr:charArray) { if(cr >= 48 && cr <= 57) {//数字 num++; } else if((cr >= 65 && cr <= 90) || (cr >= 97 && cr <= 122)) {//字母 letter++; } else if(cr == 32) {//空格 space++; } else {//其他 other++; } } } map.put("数字", num); map.put("字母", letter); map.put("空格", space); map.put("其他", other); return map; } public static void main(String[] args) { Client client = new Client(); //如果方法存在返回值,需要创建一个与返回值类型相同的变量来接收返回值 Map<String, Integer> map = client.getCharNumber("n wn =-0 qu wr s['"); System.out.println(map); } } ~~~ **第二题** 要求写一个秒表类(StopWatch),该秒表类该类在系统中只能有存在一个实例。并且存在star方法,可以用于开始计时,并且输出开始时间,同时存在stop方法用于停止计时,输出结束时间,要求秒表可以存储以毫秒为单位十个计时任务 ~~~java /** * 秒表类 * 只能存在一个实例-采用单例设计模式 * @author 一教室 * */ public class StopWatch { /** * 私有化构造器 */ private StopWatch() { } /** * 创建时间格式化对象作为属性,方便调用 */ private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); //实例化一个秒表对象,将该对象作为秒表类的属性 private static StopWatch stopWatch = new StopWatch(); /** * 创建公共方法,对外提供创建出来的stopWatch对象 * @return */ public static StopWatch getInstance() { return stopWatch; } /** * 设置一个属性(开始时间记录器),用于存储秒表开始计时的时间 */ private Date startTime; /** * 设置一个属性(计时任务存储器),用于保存十个计时任务 */ private List<Long> record = new ArrayList<Long>(); /** * 只能生成get方法,对外提供计时任务存储器数据,不能生成set方法,防止直接修改存储器数据 * @return */ public List<Long> getRecord() { return record; } /** * 开始计时方法 */ public void start() { Date date = new Date(); startTime = date;//将开始计时的时间存储到开始时间记录器中 System.out.println("开始时间:" + sdf.format(date)); } /** * 结束计时方法 */ public void stop() { if(startTime == null) {//说明没有调用开始计时方法 System.out.println("未曾开始计时"); } else { Date date = new Date(); System.out.println("结束时间:" + sdf.format(date)); long time = date.getTime() - startTime.getTime();//结束时间-开始时间 = 计时任务要求毫秒数 if(record.size() >= 10) { record.remove(0);//将最早的计时任务删除 record.add(time); } else { record.add(time); } } } } ~~~ ~~~java public class Test { public static void main(String[] args) throws InterruptedException { StopWatch stw = StopWatch.getInstance(); //开始第一次计时 stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(40);//让程序暂停40毫秒 stw.stop(); System.out.println(stw.getRecord()); //开始第二次计时 stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); stw.start(); System.out.println(stw.getRecord()); //让程序休息方法 Thread.sleep(30); stw.stop(); System.out.println(stw.getRecord()); } } ~~~ # 综合案例(面向对象) ## 场景案例: 学校新开一门专业,叫做计算机科学与应用,专业编号J0001,学制年限为4年。 现有三名学生如下表所示,加入该专业学习,要求采用Java面向对象的思维描述该场景: | 姓名 | 学号 | 性别 | 年龄 | | --- | --- | --- | --- | | 张三 | S01 | 男 | 18岁 | | 李四 | S02 | 女 | 17岁 | | 王五 | S03 | 男 | 18岁 | ## 实现效果 ![](https://img.kancloud.cn/71/3d/713dfa7a3fc7174f072e6fb00f76dc9b_1011x486.png) ## 案例分析 1. 本场景中共存在几个对象?各自的特征是什么? 2. 我们又可以针对这几个对象抽象归纳出几个类出来 ## 代码实现