Java中如何从日期字符串提取整数变量用于生日验证?
问题描述
需要编写Java代码实现生日验证功能,从用户输入的日期字符串(如"12/6/1993")中提取出整数变量DD=12、MM=6、YYYY=1993,用于后续的条件判断计算。已有的基础输入代码如下:
package practice; import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter a date as DD/MM/YYYY: "); String date = scanner.next(); System.out.println(date); } }
已知需要用到Parse相关方法,但不知道如何将字符串中的数字拆分提取为独立变量。
方法1:字符串拆分直接提取(简单场景)
通过split("/")分割字符串,再将分割后的片段转为整数,适合不需要严格校验格式的场景:
package practice; import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter a date as DD/MM/YYYY: "); String date = scanner.next(); // 用"/"分割字符串 String[] dateParts = date.split("/"); // 转换为整数变量 int dd = Integer.parseInt(dateParts[0]); int mm = Integer.parseInt(dateParts[1]); int yyyy = Integer.parseInt(dateParts[2]); // 测试输出提取结果 System.out.println("DD: " + dd + ", MM: " + mm + ", YYYY: " + yyyy); // 此处添加你的生日验证逻辑 } }
注意:该方法无格式校验,若用户输入不符合DD/MM/YYYY规范,会抛出异常。
方法2:Java日期API解析(带合法性校验)
如果需要严格校验日期格式和有效性(比如拒绝30/02/2024这类无效日期),推荐使用java.time包的API,这也是你提到的Parse方法的标准用法:
package practice; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Enter a date as DD/MM/YYYY: "); String date = scanner.next(); // 定义日期格式匹配规则 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); try { // 解析字符串为日期对象 LocalDate birthDate = LocalDate.parse(date, formatter); // 提取年、月、日整数 int dd = birthDate.getDayOfMonth(); int mm = birthDate.getMonthValue(); int yyyy = birthDate.getYear(); // 测试输出提取结果 System.out.println("DD: " + dd + ", MM: " + mm + ", YYYY: " + yyyy); // 此处添加你的生日验证逻辑 } catch (Exception e) { System.out.println("输入的日期格式不正确或日期无效,请输入DD/MM/YYYY格式的有效日期"); } } }
内容的提问来源于stack exchange,提问作者Daniel Mases
相关产品推荐
相关产品推荐

