统计个数和秒表习题

六月ゝ 毕业季﹏ 提交于 2019-12-28 14:05:23

一,输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
提示:
对比char字符在ASK码的范围,就可以确定它符号的类别
char字符ASK码的范围

数字0到9: 48~57
字母A到Z:65到90 a到z:97到122
空格是32

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方法用于停止计时,输出结束时间,要求秒表可以存储以毫秒为单位十个计时任务

/**
 * 秒表类
 * 只能存在一个实例-采用单例设计模式
 * @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);
			}
		}
	}
}
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());
	
	}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!