我制作了一个扫描仪,要求输入 3 个整数:出生月/日/年 对于每个整数,我检查这是否是有效条目(即月 <12 和月 >0)。 如果三个主菜有效,我会做一个:
System.out.println(month + "-" + day + "-" + year);
完整代码如下:
// TODO code application logic here
Scanner sc = new Scanner(System.in);
int intJour;
int intMois;
int intAnnee;
do {
System.out.println("Year of birth :");
intJour = sc.nextInt();
sc.nextLine();
} while (intJour < 0 || intJour > 31);
do {
System.out.println("Month of birth :");
intMois = sc.nextInt();
sc.nextLine();
} while (intMois < 0 || intMois > 12);
do {
System.out.println("Year of birth :");
intAnnee = sc.nextInt();
sc.nextLine();
} while (intAnnee < 0 || intAnnee > Calendar.getInstance().get(Calendar.YEAR));
System.out.println("Birth date: " + intJour + "-" + intMois + "-" + intAnnee);
我想根据用户输入确定一个日期,并检查该日期是否存在。 I.E 并非每个月都有 31 关于所涉及的年份。
最佳答案
如果你想这样做,你必须颠倒问题的顺序:问第一年,之后问月,最后问日。通过这种方式,您将能够在用户输入之前知道是否满足所有可能的条件(即:闰年的 2 月 29 日或有 31 天的月份)。
此外,要最终检查日期是否正确,请使用例如 SimpleDateFormat
.
final static String DATE_FORMAT = "dd-MM-yyyy";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int intJour;
int intMois;
int intAnnee;
do {
System.out.println("Veuillez entrer votre année de naissance :");
intAnnee = sc.nextInt();
sc.nextLine();
} while (intAnnee < 0 || intAnnee > Calendar.getInstance().get(Calendar.YEAR));
do {
System.out.println("Veuillez entrer votre mois de naissance (de 01 à 12) :");
intMois = sc.nextInt();
sc.nextLine();
} while (intMois < 0 || intMois > 12);
do {
System.out.println("Veuillez entrer votre jour de naissance (de 01 à 31) :");
intJour = sc.nextInt();
sc.nextLine();
} while (!isDateValid(intAnnee, intMois, intJour));
System.out.println("Confirmation de votre année de naissance: " + intJour + "-" + intMois + "-" + intAnnee);
sc.close();
}
public static boolean isDateValid(int year, int month, int day)
{
try {
DateFormat df = new SimpleDateFormat(DATE_FORMAT);
df.setLenient(false);
df.parse(day + "-" + month + "-" + year);
return true;
} catch (ParseException e) {
return false;
}
}
输出:
Veuillez entrer votre année de naissance :
2012
Veuillez entrer votre mois de naissance (de 01 à 12) :
30
Veuillez entrer votre mois de naissance (de 01 à 12) :
02
Veuillez entrer votre jour de naissance (de 01 à 31) :
30
Veuillez entrer votre jour de naissance (de 01 à 31) :
30
Veuillez entrer votre jour de naissance (de 01 à 31) :
30
Veuillez entrer votre jour de naissance (de 01 à 31) :
10
Confirmation de votre année de naissance: 10-2-2012
关于java - 检查 3 个整数中的出生日期是否有效 (mm/dd/yyyy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718769/