我正在为一个类编写程序,该类检查以确保用户输入的日期有效。我已经想出如何写一天到晚。该程序必须检查输入的日期是否为有效日期,包括月份和闰年之间的天数变化。任何输入将不胜感激,谢谢!附:我们只能使用Java中的标准库来实现这一目标。
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
String date;
System.out.println("Enter a date (mm/dd/yyyy): ");
date = kbd.nextLine();
if (date.length() < 10){
System.out.println("Too few characters in the date");
}else if(date.length() < 10){
System.out.println("Too many characters in the date");
}else{
if (Character.toString(date.charAt(2)).equals("/") && Character.toString(date.charAt(5)).equals("/")){
if (Integer.parseInt(date.substring(0,2)) >= 1 && Integer.parseInt(date.substring(0,2)) <= 12){
int day = Integer.parseInt(date.substring(3,6));
if(day < 1){
System.out.println("Day is not valid");
}else{
}
}else{
System.out.println("Month is not valid");
}
}else{
System.out.println("Incorrect format");
}
}
kbd.close();
}
}
答案 0 :(得分:0)
我不确定你的问题是什么......但我在Eclipse IDE中粘贴你的代码,(它没有用),然后我改变了一些东西,(现在它可以工作)。看看它,看看你的想法。我不像大多数人那样经验丰富,但如果您愿意,我会很乐意提供更多帮助,(如果您想要验证的不仅仅是当天/等)。
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner kbd = new Scanner(System.in);
String date;
System.out.println("Enter a date (mm/dd/yyyy): ");
date = kbd.nextLine();
if (date.length() < 10){ System.out.println("Too few characters in the date"); }
else if(date.length() < 10){ System.out.println("Too many characters in the date");}
else
{
if (Character.toString(date.charAt(2)).equals("/") && Character.toString(date.charAt(5)).equals("/"))
{
if (Integer.parseInt(date.substring(0,1)) >= 1 && Integer.parseInt(date.substring(3,4)) <= 12)
{
int day = Integer.parseInt(date.substring(3,4));
if(day < 1){ System.out.println("Day is not valid"); }
else{ System.out.println("User inputed Date : "+ date + " is valid."); }
}
else{ System.out.println("Month is not valid"); }
}else{ System.out.println("Incorrect format"); }
}
kbd.close();
}
}
答案 1 :(得分:0)
查看DateFormat类(以及SimpleDateFormat等派生类)。它有一个解析方法,可以帮到你。
String strDate = "29/02/2017";
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date date = df.parse(strDate);
if (date != null) {
// Input is valid
} else {
// Input not valid
}