2014-11-09 5 views
0

Итак, это мое задание - мне просто нужно вернуть true, если дата # 1 позже даты # 2, но я не думаю, что неправильно написал метод isLater, потому что когда я запускаю программу, она говорит java. lang.StackOverflowError. Вот мой код:Программа перегружена, как я могу ее исправить?

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

ответ

4

Метод isLater вызывает себя. Таким образом, он переходит в бесконечный цикл и вызывает ошибку

Хороший способ проверить, будет анализировать введенный пользователем дату в объект Date с помощью SimpleDateFormat Вы можете использовать Date.getTime, чтобы затем сравнить два дня ОБЪЕКТОВ

Редактировать Причина, по которой она рекурсивна из-за ошибочной логики Если оператор if else выполняет предложение «if», вы снова используете метод с теми же аргументами. Таким образом, он снова перейдет к предложению if и продолжится навсегда

+3

Рекурсивный метод вызывает себя .. какой сюрприз: P. Вы должны описать, почему именно это бесконечный цикл. – Tom

Смежные вопросы