繁体   English   中英

使用简单分支验证将来的日期

[英]Validate a date in the future using simple branching

当我尝试运行该程序时,我的问题是所有内容都可以编译,但是当我运行它时,它不会吐出正确的结果。

例如,我要运行日期14/12/2017,它说它是有效的一天

谁能帮助我发现错误,或者“如果”的位置之一或写错了吗?

import java.util.Scanner;
public class FutureDate {
public static void main (String args[]){

  int inputMonth;
  int inputDate;
  int inputYear;
  final int currentMonth = 10;
  final int currentDate = 24;
  final int currentYear = 2013;
  final int numberOfDays = 31; 

  Scanner keyboard = new Scanner(System.in);

  System.out.println("Enter a month in format - mm: ");
  inputMonth = keyboard.nextInt();

  System.out.println("Enter a day in format - dd: ");
  inputDate= keyboard.nextInt();

  System.out.println("Enter a year in format - yyyy: ");
  inputYear = keyboard.nextInt();


  if (inputYear > currentYear && inputMonth > currentMonth && inputDate > currentDate)
  System.out.println("Valid year");

  if (inputMonth >= 1 && inputMonth <=12)
  System.out.println("Valid Month");

  if (inputMonth == 4 || inputMonth == 6 || inputMonth == 9 || inputMonth == 11 && inputDate >= 1 && inputDate <= 30)
  System.out.println("Valid");

  if (inputMonth == 2 && inputDate >= 1 && inputDate <= 28)
  System.out.println("Valid Day");

  if (inputDate >= 1 && inputDate <= 31)
  System.out.println("Valid Day");

  if (inputYear < currentYear)  
  System.out.println ("Invalid year");

  if (inputDate < currentDate && inputMonth < currentMonth)
  System.out.println ("Invalid day");

  }
}

您的第四个IF语句

if(inputDate >= 1 && inputDate <=31) System.out.println("Valid Day");

将打印输出。

您没有使用else的代码,也没有将代码分成块,这意味着每个IF语句均由其自身求值,而与先前的if语句的结果无关。

在IF语句之后,如果不指定仅在成功(使用用{}分隔的块)后才执行其余代码,则下一条语句将以结果为条件。 (在这些情况下,将调用System.out。)

还有一点。 您可能应该看看第一个IF语句。 请记住,当您查看该语句时,必须满足所有三个条件才能将该语句评估为true。 2014年1月14日是“有效年份”,但该陈述将被视为错误。

为了获得“有效日期”,您需要使用嵌套的if语句,如下所示:

if (inputYear >= currentYear) {
    if (inputMonth >= currentMonth) {
        if (inputDate > currentDate) {
            System.out.println("Valid Date");
        }
        else {
            System.out.println("Invalid day");
        }
    }
    else {
        System.out.println("Invalid Month");
    }
}
else {
    System.out.println("Invalid Year");
}

输入日期12 - 21 - 2013

1)检查年份-有效-如果有陈述则转到下一个(如果无效,则打印“无效年份”)

2)检查月份-有效-如果有条件则转到下一个语句(如果无效,则打印“无效月份”)

3)检查日期-有效-打印“有效日期”(如果无效,则打印“无效日期”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM