java基础阶段综合练习_Java基础综合练习

这篇博客通过两个Java编程题目展示了基础实战技巧。第一题涉及统计字符串中英文字母、空格、数字和其他字符的数量,利用ASCII码进行判断。第二题实现了秒表类(StopWatch),采用单例模式,能记录并显示十个计时任务的毫秒数。
摘要由CSDN通过智能技术生成

**第一题:**

输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。

提示:

对比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 getCharNumber(String str) {

int num = 0,letter = 0,space = 0,other = 0;//变量的共同定义,表示这四个变量都是int类型

Map map = new HashMap();

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 map = client.getCharNumber("n wn =-0qu 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 record = new ArrayList();

/**

* 只能生成get方法,对外提供计时任务存储器数据,不能生成set方法,防止直接修改存储器数据

* @return

*/

public List 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. 我们又可以针对这几个对象抽象归纳出几个类出来

## 代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值