#java #arrays #spring-boot #validation #collections
#java #массивы #spring-boot #проверка #Коллекции
Вопрос:
все, что у меня есть массив дат, который содержит 15 дней с сегодняшнего дня, я хочу проверить недостающую дату и попытаться ее распечатать…
я создаю API для интерфейсной линейчатой диаграммы chartjs для этого, пытаюсь получить количество записей за 15 дней с сегодняшнего дня, если для определенной даты нет записей или некоторые даты отсутствуют, я добавлю 0 к записям для этого, пытаюсь напечатать недостающую дату
то, что я сделал до сих пор
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class Dummy {
public static void main(String args[]) {
LocalDate Today = LocalDate.now();
LocalDate checkDate = Today.minusDays(14);
List<String> apiObj = new ArrayList<>();
apiObj.add("2020-12-10");
apiObj.add("2020-12-11");
apiObj.add("2020-12-12");
apiObj.add("2020-12-13");
apiObj.add("2020-12-14");
// apiObj.add("2020-12-15");
apiObj.add("2020-12-16");
apiObj.add("2020-12-17");
apiObj.add("2020-12-18");
apiObj.add("2020-12-19");
apiObj.add("2020-12-20");
apiObj.add("2020-12-21");
apiObj.add("2020-12-22");
apiObj.add("2020-12-23");
apiObj.add("2020-12-24");
for (int i = 0; i < apiObj.size(); i ) {
System.out.println("API DATA : " apiObj.get(i) " Check Date : " checkDate);
System.out.println("Logic Check : " checkDate.toString().equals(apiObj.get(i)));
if (!checkDate.toString().equals(apiObj.get(i))) {
System.out.println("Missing Date " checkDate);
}
checkDate = checkDate.plusDays(1);
}
}
}
Все становится ложным после прокомментированной даты
ВЫВОД, который я получаю
API DATA : 2020-12-10 Check Date : 2020-12-10
Logic Check : true
API DATA : 2020-12-11 Check Date : 2020-12-11
Logic Check : true
API DATA : 2020-12-12 Check Date : 2020-12-12
Logic Check : true
API DATA : 2020-12-13 Check Date : 2020-12-13
Logic Check : true
API DATA : 2020-12-14 Check Date : 2020-12-14
Logic Check : true
API DATA : 2020-12-16 Check Date : 2020-12-15
Logic Check : false
Missing Date 2020-12-15
API DATA : 2020-12-17 Check Date : 2020-12-16
Logic Check : false
Missing Date 2020-12-16
API DATA : 2020-12-18 Check Date : 2020-12-17
Logic Check : false
Missing Date 2020-12-17
API DATA : 2020-12-19 Check Date : 2020-12-18
Logic Check : false
Missing Date 2020-12-18
API DATA : 2020-12-20 Check Date : 2020-12-19
Logic Check : false
Missing Date 2020-12-19
API DATA : 2020-12-21 Check Date : 2020-12-20
Logic Check : false
Missing Date 2020-12-20
API DATA : 2020-12-22 Check Date : 2020-12-21
Logic Check : false
Missing Date 2020-12-21
API DATA : 2020-12-23 Check Date : 2020-12-22
Logic Check : false
Missing Date 2020-12-22
API DATA : 2020-12-24 Check Date : 2020-12-23
Logic Check : false
Missing Date 2020-12-23
Процесс завершен с кодом выхода 0
Комментарии:
1. В чем проблема? Код выглядит так, как будто он должен выполнять свою работу. Какие ошибки вы получаете / какие неожиданные результаты вы получаете?
2. После указанной даты все становится ложным ДАННЫЕ API: 2020-12-14 Дата проверки: 2020-12-14 Проверка логики: истинные ДАННЫЕ API: 2020-12-16 Дата проверки: 2020-12-15 Проверка логики: ложная Дата пропуска 2020-12-15 ДАННЫЕ API: 2020-12-17 Дата проверки: 2020-12-16 Проверка логики: ложная дата пропуска 2020-12-16 ДАННЫЕ API: 2020-12-18 Дата проверки: 2020-12-17 Проверка логики : ложная Недостающая дата 2020-12-17
3. Учитывая, что вы добавляете один день к контрольной дате каждый раз в цикле, как вы ожидаете, что он когда-нибудь совпадет после пропущенного дня?
4. это то, с чем я застрял, чтобы получить решение
Ответ №1:
Вы должны изменить эту часть своего кода
if (!checkDate.toString().equals(apiObj.get(i))) {
System.out.println("Missing Date " checkDate);
}
Для
if (!checkDate.toString().equals(apiObj.get(i))) {
System.out.println("Missing Date " checkDate);
i--;
}