Adra@SRM Ответов: 1

Список дат и значений между двумя датами с помощью hashmap в javafx


Можете ли вы объяснить, как отображать даты и целочисленные значения между двумя датами с помощью hashmap, и он должен отображаться в listview в javafx.

Пример: предположим, мне нужны даты и значения между 10-02-2017 и 20-02-2017, чтобы даты и значения отображались только между этими значениями.

10-02-2017 10
11-02-2017 17
12-02-2017 15
.
.
.
20-02-2017 17

Что я уже пробовал:

Это следующий код, который я пробовал, но он получает ошибку

@FXML
    private Map<Date,Integer> map=new HashMap<Date,Integer>();
    @FXML
    private ListView listview = new ListView();


            Date date1=new Date();
            Date date2=new Date();
            
            map.put(date1, 10);
            map.put(date2,20);
            
            listItems.add(map.get(date1));
            listItems.add(map.get(date2));
            
            for(Map.Entry<Date, Integer>entry: map.entrySet())
            {
                String d="Number of entries for "+entry.getKey().toString()+" = "+entry.getValue();
                listItems.add(d);
            }
             listview.setItems(listItems);
        }

Patrice T

И вы планируете сообщить сообщение об ошибке и позицию ?

Adra@SRM

я получаю ошибку в :

элементам списка.добавить(карта.получить(дата1));
элементам списка.добавить(карта.получить(дата2));

Patrice T

А сообщение об ошибке ?
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Adra@SRM

жаль, что

ошибка была :

элементам списка.добавить(карта.получить(дата1));
коллекция способ.добавить(строка) не применяется
(несоответствие аргументов; целое число не может быть преобразовано в строку)
список методов.добавить(строка) не применяется
(несоответствие аргументов; целое число не может быть преобразовано в строку)

1 Ответов

Рейтинг:
0

Richard MacCutchan

listItems.add(map.get(date1));

Ваш призыв к map.get возвращает целочисленное значение (10, 20 и т. д.), Но listItems.add требуется строка.

Как ясно указано в сообщениях об ошибках.


Adra@SRM

Благодарю вас за ответ, сэр. Теперь я пробую другое утверждение для даты, которое показано ниже:

LocalDate dateFrom=dpFrom. getValue();
LocalDate dateTo=dpTo. getValue();
LocalDate currentDate=dateFrom;
while (currentDate. isBefore(dateTo)){
карте.поставить(текущая дата, 0);
currentDate=currentDate+1;
}

но я получаю ошибку в последней строке "currentDate=currentDate+1", говоря, что плохие типы операндов для двоичного оператора '+'.

Каково было бы решение этой проблемы?

Richard MacCutchan

Лучшим решением было бы изучить документацию для класса Java Date, чтобы узнать, как добавить 1 к дате.

Adra@SRM

хорошо спасибо сэр