在java中读取日期内获取异常
我正在解决一个问题,给定初始日期和最终日期,返回它们之间的天数 我刚刚完成,我的答案似乎是正确的,但它说,在一些输入,我的阅读方法失败了,它抛出了一个例外 以下是我读取日期并将其解析为整数的代码:在java中读取日期内获取异常,java,date,exception,Java,Date,Exception,我正在解决一个问题,给定初始日期和最终日期,返回它们之间的天数 我刚刚完成,我的答案似乎是正确的,但它说,在一些输入,我的阅读方法失败了,它抛出了一个例外 以下是我读取日期并将其解析为整数的代码: String si = in.nextLine(); String sf = in.nextLine(); int di = Integer.parseInt(si.substring(0, 2)); int mi = Integer.parseInt(si.sub
String si = in.nextLine();
String sf = in.nextLine();
int di = Integer.parseInt(si.substring(0, 2));
int mi = Integer.parseInt(si.substring(3, 5));
int ai = Integer.parseInt(si.substring(6, si.length()));
int df = Integer.parseInt(sf.substring(0, 2));
int mf = Integer.parseInt(sf.substring(3, 5));
int af = Integer.parseInt(sf.substring(6, sf.length()));
日期以XX/XX/XXXX格式给出(为了安全起见,我使用s.length读取年份以涵盖9999年的案例)
这段代码中有什么东西会在以这种格式读取年份时引发异常?以下代码片段将很好地工作:
try {
System.out.println("Entered Dates::\n");
Scanner in = new Scanner(System.in);
String si = in.nextLine();
if (Pattern.matches("\\d\\d/\\d\\d/\\d\\d\\d\\d", si)) {
int di = Integer.parseInt(si.substring(0, 2));
int mi = Integer.parseInt(si.substring(3, 5));
int ai = Integer.parseInt(si.substring(6, si.length()));
System.out.println("1st Date Accepted : " + di + "-" + mi + "-" + ai);
}else{
System.out.println("Entered 1st Date incorrect");
}
String sf = in.nextLine();
if (Pattern.matches("\\d\\d/\\d\\d/\\d\\d\\d\\d", sf)) {
int df = Integer.parseInt(sf.substring(0, 2));
int mf = Integer.parseInt(sf.substring(3, 5));
int af = Integer.parseInt(sf.substring(6, sf.length()));
System.out.println("2nd Date Accepted : " + df + "-" + mf + "-" + af);
}else{
System.out.println("Entered 2nd Date incorrect");
}
} catch (Exception e) {
System.out.println("Exception occurred: " + e);
}
可以对任何少于7个字符的行抛出一个
异常
,以及si.substring()或sf.substring()。。。我只是发送代码,但无法访问输入测试。但我解决了在字符“/”之前、之间和之后查找数字的问题。“\\d\\d/\\d/\\d/\\d\\d\\d”是从命令行访问日期的模式。参考