Java作用域问题:try-catch块,解析字符串到日期



我正在尝试将字符串转换为Java中的日期变量。为了尝试这样做,我正在尝试一种解析方法,它需要一个try-catch块,但我有作用域问题。变量"日期"在我的雇员构造函数中没有接收日期,因为日期在try块中。我收到错误:"日期无法解析为变量"。—请让我知道你的想法,或者如果我可以转换字符串日期在一个更容易的方式。谢谢你!

代码片段/em>/

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();
}

最新更新