Java 程序过载,如何修复?

Java 程序过载,如何修复?,java,Java,好的,这是我的任务-如果date#1晚于date#2,我只需返回true,但我不认为我写错了isLater方法,因为当我运行程序时,它会显示java.lang.StackOverflowerError。这是我的密码: import java.util.Scanner; public class Dates { /** * returns true if month1/day1/year1 is later than * month2/day2/year2; otherwis

好的,这是我的任务-如果date#1晚于date#2,我只需返回true,但我不认为我写错了isLater方法,因为当我运行程序时,它会显示java.lang.StackOverflowerError。这是我的密码:

import java.util.Scanner;

public class Dates
{
  /**
   *  returns true if month1/day1/year1 is later than
   *  month2/day2/year2; otherwise returns false
   */
  public static boolean isLater(int month1, int day1, int year1,
                                int month2, int day2, int year2)
  {

    if (isLater (month1, day1, year1, month2, day2, year2))
        return true;
    else
        return false;

  }

  public static void main(String[] args)
  {
    Scanner kb = new Scanner(System.in);

    System.out.print("Enter the first date  (month day year): ");
    int month1 = kb.nextInt();
    int day1 = kb.nextInt();
    int year1 = kb.nextInt();

    System.out.print("Enter the second date (month day year): ");
    int month2 = kb.nextInt();
    int day2 = kb.nextInt();
    int year2 = kb.nextInt();

    System.out.println();  // blank line

    String msg = month1 + "/" + day1 + "/" + year1;
    if (isLater(month1, day1, year1, month2, day2, year2))
      msg += " IS ";
    else
      msg += " is NOT ";
    msg += "later than " + month2 + "/" + day2 + "/" + year2;
    System.out.println(msg);
    kb.close();
  }
}
我该怎么做才能解决这个问题?换句话说,除此之外,我如何使用isLater方法来比较这两个日期

谢谢!
Simone

isLater方法正在调用自身。所以它进入无限循环并导致错误

检查的一个好方法是使用SimpleDataFormat将用户输入的日期解析为日期对象 然后可以使用Date.getTime比较两个日期对象

编辑 它是递归的原因是因为有缺陷的逻辑
如果If-else语句运行“If”子句,则再次使用相同的参数运行该方法。因此它将再次转到if子句,并一直循环

isLater方法正在调用它自己。所以它进入无限循环并导致错误

检查的一个好方法是使用SimpleDataFormat将用户输入的日期解析为日期对象 然后可以使用Date.getTime比较两个日期对象

编辑 它是递归的原因是因为有缺陷的逻辑
如果If-else语句运行“If”子句,则再次使用相同的参数运行该方法。因此,它将再次转到if子句,并一直循环

一个递归方法正在调用它自己。。令人惊讶的是:P.你应该描述一下为什么它是一个无限循环。一个递归方法正在调用它自己。。多么令人惊讶:P。你应该描述一下为什么它是一个无限循环。