根据出生日期判断星座【java实战】

简介: 巩固一下java的流程控制语句的编写和锻炼理解能力。

首先,我们需要搞清楚十二星座分别对应的日期划分范围(参看下图)。

image.png

java实现代码:

public static void main(String[] args) {

 System.out.println("请输入您的出生日期(如 0123 表示 1 月 23 日):");

 Scanner scanner = new Scanner(System.in);

 // 获取用户输入日期

 int monthday = scanner.nextInt();

 int month = monthday / 100; // 月份

 int day = monthday % 100; // 日期号

 String xingzuo = "";  

 switch (month) {

 case 1:

  xingzuo = day < 21 ? "摩羯座" : "水瓶座";

  break;

 case 2:

  xingzuo = day < 20 ? "水瓶座" : "双鱼座";

  break;

 case 3:

  xingzuo = day < 21 ? "双鱼座" : "白羊座";

  break;

 case 4:

  xingzuo = day < 21 ? "白羊座" : "金牛座";

  break;

 case 5:

  xingzuo = day < 22 ? "金牛座" : "双子座";

  break;

 case 6:

  xingzuo = day < 22 ? "双子座" : "巨蟹座";

  break;

 case 7:

  xingzuo = day < 23 ? "巨蟹座" : "狮子座";

  break;

 case 8:

  xingzuo = day < 24 ? "狮子座" : "处女座";

  break;

 case 9:

  xingzuo = day < 24 ? "处女座" : "天秤座";

  break;

 case 10:

  xingzuo = day < 24 ? "天秤座" : "天蝎座";

  break;

 case 11:

  xingzuo = day < 23 ? "天蝎座" : "射手座";

  break;

 case 12:

  xingzuo = day < 22 ? "射手座" : "摩羯座";

  break;

 }

 System.out.println("您的星座是:" + xingzuo);  

 scanner.close(); // 关闭scanner对象

}

这里采用switch语句实现条件判断,主要考虑两个方面,一是判断的具体数值不多(十二星座),二是条件类型为int,符合case类型要求。

不过其中有个小warning,但不影响程序正常执行。但对我一个强迫症来说,总想消灭它才罢休。就是如果不加scanner.close(); 这行代码会出现

"Resource leak: 'scanner' is never closed"警告,大概意思是你new的scanner对象没有关闭,资源会泄露。因此,在main函数的外部,再调用它的closed方法即可。

相关文章
|
1月前
|
Java 应用服务中间件 开发工具
苍穹外卖》电商实战项目(java)知识点整理(上)
苍穹外卖》电商实战项目(java)知识点整理(上)
190 3
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
3月前
|
Java 关系型数据库 MySQL
兴奋!阿里巴巴首推“Java进阶必备宝典”,理论到实战,一键搞定
作为一名Java方向的程序员,打好夯实的基础是非常重要的,现在大厂面试对于程序员基础知识的掌握考察也越来越严格,虽然说现在技术更新比较快,但基础扎实才能够更深入的去理解每一个知识技术点。
|
17天前
|
设计模式 安全 Java
Java并发编程实战:使用synchronized关键字实现线程安全
【4月更文挑战第6天】Java中的`synchronized`关键字用于处理多线程并发,确保共享资源的线程安全。它可以修饰方法或代码块,实现互斥访问。当用于方法时,锁定对象实例或类对象;用于代码块时,锁定指定对象。过度使用可能导致性能问题,应注意避免锁持有时间过长、死锁,并考虑使用`java.util.concurrent`包中的高级工具。正确理解和使用`synchronized`是编写线程安全程序的关键。
|
3月前
|
传感器 自动驾驶 算法
JAVA实战演练之自动驾驶系统
JAVA实战演练之自动驾驶系统
|
2月前
|
监控 IDE Java
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
Java项目调试实战:如何高效调试Spring Boot项目中的GET请求,并通过equalsIgnoreCase()解决大小写不一致问题
40 0
|
4天前
|
存储 Java 数据库连接
java DDD 领域驱动设计思想的概念与实战
【4月更文挑战第19天】在Java开发中,领域驱动设计(Domain-Driven Design, DDD) 是一种软件设计方法论,强调以领域模型为中心的软件开发。这种方法通过丰富的领域模型来捕捉业务领域的复杂性,并通过软件满足核心业务需求。领域驱动设计不仅是一种技术策略,而且还是一种与业务专家紧密合作的思维方式
21 2
|
14天前
|
Java API 开发者
Java 8新特性之函数式编程实战
【4月更文挑战第9天】本文将深入探讨Java 8的新特性之一——函数式编程,通过实例演示如何运用Lambda表达式、Stream API等技术,提高代码的简洁性和执行效率。
|
25天前
|
存储 安全 Java
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
30 1
|
25天前
|
Java API Apache
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
43 0