Java 如何在第二个if块中使用date1的更新值。“显示错误”;无法解析日期1“;
公开课考试{Java 如何在第二个if块中使用date1的更新值。“显示错误”;无法解析日期1“;,java,Java,公开课考试{ public static void check1 (String date) throws ParseException { SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy"); SimpleDateFormat sdf2 = new SimpleDateFormat("MMMM dd, yyyy"); if(date.matches(&quo
public static void check1 (String date) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("MMMM dd, yyyy");
if(date.matches("^\\w+.+")) {
Date date1 = sdf2.parse(date);
}
else {
Date date1 = sdf1.parse(date);
}
Date current = new Date();
if(date1.compareTo(current)<-1) {
System.out.println("In Past");
}
else {
System.out.println("Same or future date");
}
publicstaticvoidcheck1(字符串日期)引发异常{
SimpleDataFormat sdf1=新的SimpleDataFormat(“MM/dd/yyyy”);
SimpleDataFormat sdf2=新的SimpleDataFormat(“MMMM dd,yyyy”);
如果(日期匹配(“^\\w++”){
Date date1=sdf2.parse(日期);
}
否则{
Date date1=sdf1.parse(日期);
}
当前日期=新日期();
如果(date1.compareTo(current)您已在范围中声明了变量,该范围将在您关闭括号时结束,也就是说在此之后该变量不再处于活动状态。您可以做的是将其取出:
public static void check1 (String date) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("MMMM dd, yyyy");
Date date1;
if(date.matches("^\\w+.+")) {
date1 = sdf2.parse(date);
}
else {
date1 = sdf1.parse(date);
}
Date current = new Date();
if(date1.compareTo(current)<-1) {
System.out.println("In Past");
}
else {
System.out.println("Same or future date");
}
}
publicstaticvoidcheck1(字符串日期)引发异常{
SimpleDataFormat sdf1=新的SimpleDataFormat(“MM/dd/yyyy”);
SimpleDataFormat sdf2=新的SimpleDataFormat(“MMMM dd,yyyy”);
日期1;
如果(日期匹配(“^\\w++”){
date1=sdf2.parse(日期);
}
否则{
date1=sdf1.parse(日期);
}
当前日期=新日期();
如果(date1.compareTo(current)变量仅在其声明的范围内可见(在其封闭的{和}之间)
您的2个date1变量在if和else块的范围内声明(Date date1)。因此,它们在外部不可见(实际上不存在于这些范围之外)
您需要在以下外部进行申报:
public static void check1(String date) throws ParseException {
SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("MMMM dd, yyyy");
Date date1; // <- declare date1 here
if (date.matches("^\\w+.+")) {
date1 = sdf2.parse(date);
} else {
date1 = sdf1.parse(date);
}
Date current = new Date();
if (date1.compareTo(current) < -1) {
System.out.println("In Past");
} else {
System.out.println("Same or future date");
}
}
publicstaticvoidcheck1(字符串日期)引发异常{
SimpleDataFormat sdf1=新的SimpleDataFormat(“MM/dd/yyyy”);
SimpleDataFormat sdf2=新的SimpleDataFormat(“MMMM dd,yyyy”);
日期1//