Способ проверки даты из cmd - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно как-то проверить две даты, но я не знаю, какой из них лучший. В основном классе я создал объекты, которые передаются конструктором в NBPParserEngine.

package pl.parser.nbp;

import pl.parser.nbp.calculations.RateCalculations;
import pl.parser.nbp.validation.ConditionChecker;
import pl.parser.nbp.validation.ConditionCheckerService;
import pl.parser.nbp.historysystem.HistorySystem;
import pl.parser.nbp.historysystem.HistorySystemService;
import pl.parser.nbp.view.NbpParserView;

import java.time.LocalDate;

public class MainClass {

    public static void main(String[] args) {

        NbpParserView nbpParserView = new NbpParserView();
        DataFetcher dataFetcher = new DataFetcher();
        HistorySystem historySystem = new HistorySystemService();
        RateCalculations rateCalculations = new RateCalculations();
        ConditionChecker conditionChecker = new ConditionCheckerService();
        NBPParserEngine nbpParserEngine = new NBPParserEngine(conditionChecker, dataFetcher, rateCalculations,
                historySystem, nbpParserView);


        String currency = args[0];
        LocalDate startDate = LocalDate.parse(args[1]);
        LocalDate endDate = LocalDate.parse(args[2]);

        nbpParserEngine.executeNbpParserEngine(startDate, endDate, currency);
    }
}

Мне нужно проверить, хороши ли эти две даты, потому что если нет, то выбрасывается DateTimeParseException. Должен ли я проверить его в основном с помощью while петли и сканера или каким способом?

1 Ответ

1 голос
/ 02 мая 2019

Используйте оператор try-catch, например:

    LocalDate startDate = null;
    try {
        startDate = LocalDate.parse(args[1]);
    } catch (DateTimeParseException dtpe) {
        System.err.println("Start date \"" + args[1] + "\" is not a valid date.");
        System.exit(-1);
    }

Аналогично для даты окончания.

Поиск java exception handling или аналогичный, чтобы узнать больше.

И да, если ваша программа является интерактивной, альтернативой чтению дат из командной строки является чтение из стандартного ввода с помощью сканера и циклическое выполнение до ввода правильной даты. Опять же, я думаю, что поиск приведет вас к строительным блокам, которые вам нужны для их объединения.

...