java - Java 范围问题:try-catch 块,将 String 解析为 Date
问题描述
我正在尝试将 String 转换为 Java 中的 Date 变量。为了尝试这样做,我正在尝试一种解析方法,它需要一个 try-catch 块,但我遇到了范围问题。我的 Employee 构造函数中的变量“date”没有收到日期,因为日期在 try 块中。我收到错误:“日期无法解析为变量”。-- 请让我知道您的想法,或者我是否可以以更简单的方式将字符串转换为日期。谢谢!
/代码片段/
String stringDate = sc.next();
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
try {
Date date = dateFormatter.parse(stringDate);
}catch(ParseException e) {e.printStackTrace();}
e = new Employee(id, login, salary, date, name);
解决方案
您需要在 try 范围之外定义变量,然后从内部使用它。此代码将符合您的期望:
String stringDate = sc.next();
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
Date date = null;
try {
date = dateFormatter.parse(stringDate);
} catch(ParseException e) {
e.printStackTrace();
}
e = new Employee(id, login, salary, date, name);
您现在需要注意,当您创建新员工时,日期可能为空。因此,您甚至可以更进一步,仅当日期不为空时才这样做。但是在你在这里的代码片段中,变量 e 无论如何都没有定义(或者只是在 catch 块中使用)。
String stringDate = sc.next();
SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
try {
Date date = dateFormatter.parse(stringDate);
e = new Employee(id, login, salary, date, name);
} catch(ParseException e) {
e.printStackTrace();
}
推荐阅读
- webpack - 如何从 Webpack Dev Server 热重载中的 URL 中删除端口?
- r - 从数据框中删除单元格小于或大于 R 中值的行
- json - 使用 Google Sheets API 创建持久值的方法有哪些?
- react-native - 当反应本机应用程序在后台/设备被锁定时,如何防止socket.io断开连接?
- c# - 在实体框架中添加相关对象的最佳实践是什么?
- python - 从给定列表的列中查找重复项
- ios - 录制时播放音频会降低音量
- amazon-web-services - EB Beanstalk 上的 Docker 部署失败
- javascript - 试图为我的不和谐机器人发出禁令命令,但是当我运行命令时,我总是收到错误
- ios - 如何制作自由形状的按钮?