0

当我尝试运行这个程序时,我的问题是一切都可以编译,但是当我运行它时,它并没有吐出正确的结果。

例如,我想运行日期 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");

  }
}
4

2 回答 2

0

你的第四个 IF 语句

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

将打印输出。

您没有使用 else 或以其他方式将代码分成块,这意味着每个 IF 语句都在自行评估,而不管之前的 if 语句的结果如何。

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

另一个小点。您可能应该看一下您的第一个 IF 语句。请记住,当您查看它时,必须满足所有三个条件才能使该语句被评估为真。2014 年 1 月 14 日是“有效年份”,但该声明将被评估为错误。

于 2013-10-21T02:23:06.787 回答
0

为了获得“有效日期”,您需要使用这样的嵌套 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)检查年份-有效-转到下一个if语句(如果无效,打印“无效年份”)

2)检查月份 - 有效 - 执行下一个 if 语句(如果无效,打印“无效月份”)

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

于 2013-10-21T02:23:58.343 回答