JAVA趣味课程:自定义时间类的增减操作

最近应公司领导需求,开发编程趣味案例,提升学生学习兴趣,引导学生更好的理解程序逻辑。业余时间,我搜集总结了一些网络大神提供案例,对需求进行了改编和升级,增加了趣味性。这里我先将部分案例记载在博客中~~

相关“面向对象基础知识点”的需求如下:

在JAVA程序中,经常要对时间进行操作,那么自己实现一个时间类,满足程序中的需要。
定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),
为了保证数据的安全性,这三个成员变量应声明为私有。
为MyTime类定义构造方法,以方便创建对象时初始化成员变量。
再定义diaplay方法,用于将时间信息打印出来。
为MyTime类添加以下方法:
addSecond(int sec) addMinute(int min) addHour(int hou)
subSecond(int sec) subMinute(int min) subHour(int hou)

逻辑分析:

在需求中定义私有属性和提供公共方法以及提供构造函数这三个需求都是面向对象中,非常简单的,可以直接通过编辑器生成,定义display方法也只是对于时分秒数值进行打印,比较容易实现。此题难度在于 增加时间与减少时间。但是二者逻辑相似。

这里,我们以增加时间为例,首先判断传入参数的正负,如果是正数则增加时间,如果为负数其实是减少时间,故负数时应该调用减少小时的方法,而增加小时数超过了24小时,意味着日期也在增加,时间类不讨论日期的问题,那么我们需要刨除增加的天数外,获取还剩余小时数。故编码时应该对于增加时间进行取余,然后添加到原有的小时数中。如果相加后的和操作24,又以为了多了一天,需要减掉多着一天的24小时,就获取了第二天的时间,在此思路下,代码如下:

//	增加小时的方法
	public void addHour(int hou) {
		if (hou>=0) {   //当传入参数为正数为增加小时
//		一天24个小时,添加的时间是否超过24,就可视为又添加了日期,只计算时间不针对日期,首先对于24进行取余
			hou = hou%24;
//		将刨除天数之后的小时数,添加到原来小时的后面  
			int totalhour = hour+hou;
			if (totalhour<24) {
				hour = to
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java增减库存的幂等业务可以通过以下步骤实现: 1.首先,需要定义一个唯一的业务ID,可以使用订单号或者其他唯一标识符。 2.在进行库存增减操作之前,需要先查询该业务ID对应的库存操作是否已经执行过,可以通过查询数据库或者缓存来实现。 3.如果该业务ID对应的库存操作已经执行过,则直接返回执行成功的结果,不再进行库存操作。 4.如果该业务ID对应的库存操作没有执行过,则进行库存操作,并将该业务ID和库存操作结果存储到数据库或者缓存中。 5.在进行库存操作时,需要使用乐观锁或者悲观锁来保证并发操作的正确性。 以下是一个简单的Java增减库存的幂等业务的示例代码: ```java public class StockService { private StockDao stockDao; public void setStockDao(StockDao stockDao) { this.stockDao = stockDao; } public boolean decreaseStock(String orderId, int productId, int quantity) { // 1.定义业务ID String businessId = orderId; // 2.查询库存操作是否已经执行过 StockOperation operation = stockDao.getStockOperation(businessId); if (operation != null) { // 库存操作已经执行过,直接返回执行成功的结果 return operation.isSuccess(); } // 3.进行库存操作 boolean success = false; try { // 使用乐观锁或者悲观锁来保证并发操作的正确性 Stock stock = stockDao.getStock(productId); if (stock != null && stock.getQuantity() >= quantity) { stock.setQuantity(stock.getQuantity() - quantity); stockDao.updateStock(stock); success = true; } } catch (Exception e) { e.printStackTrace(); } // 4.将业务ID和库存操作结果存储到数据库或者缓存中 stockDao.addStockOperation(new StockOperation(businessId, success)); // 5.返回库存操作结果 return success; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值