Java 范围问题:try-catch 块,将字符串解析为日期
Java Scope Issues: try-catch block, parsing String to Date
我正在尝试将字符串转换为 Java 中的日期变量。为了尝试这样做,我正在尝试一种解析方法,它需要一个 try-catch 块,但我遇到了范围问题。由于日期在 try 块中,我的 Employee 构造函数中的变量“date”没有收到日期。我收到错误:“日期无法解析为变量”。 -- 请让我知道您的想法,或者我是否可以用更简单的方式将字符串转换为日期。谢谢!
/代码段/
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();
}
我正在尝试将字符串转换为 Java 中的日期变量。为了尝试这样做,我正在尝试一种解析方法,它需要一个 try-catch 块,但我遇到了范围问题。由于日期在 try 块中,我的 Employee 构造函数中的变量“date”没有收到日期。我收到错误:“日期无法解析为变量”。 -- 请让我知道您的想法,或者我是否可以用更简单的方式将字符串转换为日期。谢谢!
/代码段/
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();
}