【发布时间】:2016-05-24 02:16:51
【问题描述】:
我正在尝试制作一个用户输入日期(任何日期)的程序,例如 29-Jul-1995。程序应匹配日期格式并验证此日期是否正确。
这是我的代码:
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Review1_Main {
public static Pattern pattern;
public static Matcher matcher;
// DATE_PATTERN is a format for user input
private static final Pattern DATE_PATTERN = Pattern.compile("(0?[1-9]|[12][0-9]|3[01])-(^[a-zA-Z]+$)-((19|20)\\d\\d)");
// Date format validation
public static boolean dateValidation(String date) {
matcher = pattern.matcher(date);
if(matcher.matches()) {
matcher.reset();
if (matcher.find()) {
int day = 01;
String month = "Jan";
int year = 2000;
if(day == 31 && !month.equals("Apr") || !month.equals("Jun") ||
!month.equals("Sep") || !month.equals("Nov")) {
return false;
} else if(month.equals("Feb")) {
// LEAP year validation
if (year % 4 == 0) {
if (day == 30 || day == 31) {
return false;
} else {
return true;
}
} else {
if (day == 29 || day == 30 || day == 31) {
return false;
} else {
return true;
}
}// end of year % 4
} else {
return true;
}// end of day.equals
} else {
return false;
} // end of matcher.find
} else {
return false;
}// end of matcher.matcher
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String dateInput = "29-Jul-1995";
dateValidation(dateInput);
}
} // end of class
但是由于某种原因,当我尝试编译它时,我总是得到这个错误:
Exception in thread "main" java.lang.NullPointerException
at Review1_Main.dateValidation(Review1_Main.java:22)
at Review1_Main.main(Review1_Main.java:73)
第 22 行在哪里:
matcher = pattern.matcher(date);
第 73 行是:
dateValidation(dateInput);
我为我的语法道歉。
谢谢。
【问题讨论】:
-
您是否正在使用 Java 8?
-
@MichaelMarkidis 是的
-
看看docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html(这可以让你的生活更轻松)。还有很多关于 SO 的例子。
标签: java regex if-statement java.util.scanner