Список дат, как указано ниже (Список может быть в любом порядке): 3-янв. 31-Mar, 2-апреля 30-Jun, 1-июл 30-сен 4-окт 31-декабряJava: данный список объектов, имеющих диапазон дат, найдет два объекта, конец которых ближе всего к текущей дате, месяц
Текущая дата: 19-февраля
Может кто-то пожалуйста, помогите мне с логика?
Мой подход:
если (данная дата должна быть больше, чем дата начала и меньше даты окончания) {// это дает текущий квартал} еще если (разница месяца текущей даты от даты окончания каждого объекта должна быть меньше или равна 5)
я жесткого кодирования состояние менее чем 5, которые могут сломаться, если в будущем диапазон даты будет 4 месяца
Второй подход:
мы можем сортировать список по возрастанию и получить индекс текущего квартала по сравнению с текущей датой, а следующий квартал будет следующего индекса. Но сложность будет больше.
Я пробовал под кодом, но он дает только текущую четверть даты. Я не могу получить следующий квартал, учитывая, что будет только 3 объекта, а текущий день месяца - feb.
общественности статический список getCurrentQtrOffr (подробно список, Дата CurrentDate) броски ParseException {
int currentQuarter = 9999, diff1;
int nextquarter = 9999, diff2;
Detail detail1;
Detail detail2;
Detail detail3 = null;
Detail detail4 = null;
Iterator<Detail> iterator = detail.iterator();
List<Detail> list = new ArrayList<Detail>();
while(iterator.hasNext()){
detail1 = iterator.next();
diff1 = getDiff(currentDate,detail1.startTime());
if(diff1>0){
if(iterator.hasNext()){
detail2 = iterator.next();
}else{
detail2 = null;
}
if(detail2 != null){
diff2 = getDiff(currentDate,detail2.startTime());
if(diff1 < diff2){
if(currentQuarter > diff1){
nextquarter = currentQuarter;
currentQuarter = diff1;
//how to assign detail3 before updating it with next minimum value, as if there will be only 3 object and flow comes in this if block then detail4 will be null
detail4=detail3;
detail3=detail1;
}else if(nextquarter > diff1){
nextquarter = diff1;
detail4=detail1;
}
}else{
if(currentQuarter > diff2){
nextquarter = currentQuarter;
currentQuarter = diff2;
detail4=detail3;
detail3=detail1;
}else if(nextquarter > diff2){
nextquarter = diff2;
detail4=detail1;
}
}
}else{
if(currentQuarter > diff1){
nextquarter = currentQuarter;
currentQuarter = diff1;
detail4=detail3;
detail3=detail1;
}else if(nextquarter > diff1){
nextquarter = diff1;
detail4=detail1;
}
}
}else{
System.out.println("skipped "+diff1);
}
}
list.add(detail3);
list.add(detail4);
return list;
}
Что не так с вопросом, что оно отмечено отрицательным? – Rehan
не может использовать календарь, поскольку диапазон дат может быть изменен. – Rehan
Я не спустил вниз, но я предполагаю, что они занижены, потому что вы ничего не пробовали. Вы должны опубликовать то, что вы пробовали. Читайте: http://stackoverflow.com/help/mcve – BlackHatSamurai