Java编程解决黑色星期五问题

需积分: 13 2 下载量 135 浏览量 更新于2024-09-10 收藏 28KB DOCX 举报
"本书以实战案例的形式介绍Java SE编程,主要关注如何利用Java解决实际的数学问题,如黑色星期五的计算以及税务问题的求解。本书适合希望通过编程锻炼逻辑思维能力和智力的读者,特别是对Java技术有学习需求的人群。 第2章详细探讨了身边的数学问题,通过编程来解决一些趣味性的数学挑战。首个案例是‘黑色星期五’的寻找,这是一个涉及日期判断的逻辑问题。在问题描述中,黑色星期五是指13号恰好是星期五的日子,因为13号和星期五都被视为不吉利的象征。在西方文化中,这两个元素的组合被认为带来坏运气。 问题分析部分提出了两种解决方案。第一种是直接从起始日期开始逐日检查,直到找到符合条件的日期,虽然这种方法可行,但效率较低。第二种方法更为高效,仅需判断每年的13号是否为星期五。Java的Calendar类提供了强大的日期处理功能,能轻松获取每个月13号对应的星期几。 在程序设计上,作者建议使用嵌套循环来实现。外层循环用于遍历未来n年,内层循环则针对每年的12个月。当判断到13号且该日为星期五时,输出该日期即为黑色星期五。使用Calendar类的API,可以通过设置年、月、日等属性,然后调用相关方法获取星期几的信息。 对于判断13号是星期几的具体步骤,需要创建一个Calendar对象,然后设置对象的年、月、日为当前月份的13号。之后,通过调用get()方法,传入Calendar.DAY_OF_WEEK参数,即可获取到星期几的数值。Java中,Calendar.SUNDAY到Calendar.SATURDAY分别代表一周的七天,因此,根据返回值可以判断出13号是星期几。 这个案例展示了如何利用Java进行逻辑判断和日期处理,同时强调了解决问题时的效率优化和编程技巧,是学习Java技术的好实践。通过这样的实战练习,读者不仅可以提升编程技能,还能增强逻辑思维和解决问题的能力。"
2008-05-23 上传
2011-08-11 上传
 设有总行CCH,若干个支行如:支行CIBC、支行TD等(不一定是两个支行)。CIBC支行通过网络与CCH总行及其若干个CIBC ATM终端机相连。TD支行通过网络与CCH总行及其若干个TD ATM终端机相连。客户持支行的卡在ATM终端机上进行“存款”、“取款”、“查询余额”、“结束本次操作”四个操作。CIBC支行的客户可以在CIBC的ATM终端机上操作。也可在TD支行的ATM机上跨行操作。每个支行的客户在各自的支行上有账户。初始时各个支行设有100个账户。每个账户有现金100元。总行CCH只保存有各个支行CIBC与TD的所有账户的现金总额。每一个支行的每一个账户的现金若发生变化,都要向总行报告,以便总行进行支行现金的总额平衡。   每一个账户有账号、密码、金额、用户的情况(姓名、性别等)。CIBC支行的客户可以在CIBC支行的ATM终端上进行交易操作, 也可以跨行在TD支行的ATM终端机上进行交易操作。此时跨行交易操作时,CIBC客户的身份验证,TD支行要通过网络委托他的原银行即CIBC支行代为查询验证。所有的交易操作TD支行都要委托他的原银行CIBC支行进行处理并将结果反馈给客户。   初始时总行CCH服务器先启动。然后各个支行的服务器再启动并向总行CCH服务器报到。然后各个支行的ATM终端启动并向自己所属的支行服务器报到。若支行的服务器没有启动,则该支行的客户不能进行交易。   进一步扩展的功能有:行内转账、跨行转账。无论哪种转账,目标账户即使支行服务器还没有开启,也允许进行(此时只能存、不能取款、查询.这是因为无法身份验证)。该转账信息先暂存于总行CCH处。当支行服务器启动向总行CCH报到时,总行CCH服务器立即将转账信息传给该支行。假设CCH总行为每一个支行最多保存30条转账记录。(扩展功能暂时还没实现)