Невозможно заменить значение в HashMap, даже если ключ и значение существуют и карта инициализирована (Java) [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно заменить значение в HashMap, даже если ключ и значение существуют и карта инициализирована (Java) [дубликат]

Сообщение Anonymous »


Я работаю над проектом кинотеатра, и у меня есть HashMap Map movieTicketsMap = new HashMap(); в качестве переменной в одном из классов, который называется Movie, и в конструкторе Movie я инициализирую хэш-карту, а затем помещаю в нее несколько ключей и значений, затем, когда я пытаюсь заменить одно значение другим, оно возвращает значение null и выдает исключение NullPoinerException и не заменяет значение! Я убедился, что ключ существует и имеет значение, но он все равно выдает исключение! Итак, я не могу заменить значение в HashMap, даже если ключ и значение существуют и карта инициализирована! вот тайники моего кода: Класс фильма:

частная строка movieTitle; частный кинотеатр киноКино; частный тип MovieType; //Перечисление частный ArrayList MovieShowTimesList; //ФК частный международный рейтинг фильмов; частный ImageIcon MovieImage; частный ArrayList MovieTicketsList; частная карта MovieTicketsMap; частный int MovieID; //ПК частный статический int MovieIDInitializer; частный статический ArrayList MovieList; public Movie(String MovieTitle, Type MovieType, int MovieRating, String MovieImagePath, Cinema MovieCinema ,int год, int месяц, int день) { this.movieTitle = MovieTitle; this.movieType = MovieType; this.movieRating = MovieRating; this.movieImage = новый ImageIcon(getClass().getResource(movieImagePath)); this.movieCinema = MovieCinema; MovieID = MovieIDInitializer; фильмИДинициализатор++; go.saveInitializer("Фильм"); MovieShowTimesList = новый ArrayList(); for(int я = 1 ; я */ this.ticketMovie.replaceValueInMovieTicetsMap(( showtimekey+this.ticketSeat.getSeatID()) ,this.ticketID); go.save("Билет" , это, этот.ticketID); } Итак, что я делаю не так?

Я пытался вызвать метод map.replace(key, value); напрямую, но это не сработало. Я подумал, что ключ, который я передаю, неправильный, и обнаружил, что это правильно! Я знаю, что это безнадежно, но я также попытался окружить предложение с помощью try и catch, чтобы исключение больше не появлялось, но значение, конечно, не заменялось.

это трассировка стека исключений:

Исключение в потоке «AWT-EventQueue-0» java.lang.NullPointerException в MainPackage.Movie.replaceValueInMovieTicetsMap(Movie.java:59) в MainPackage.Ticket.setTicketSeatStatus(Ticket.java:55) в Action.Ticketing.bookTicket(Ticketing.java:30) в Interfaces.booked_ticket_form.lblBookMouseClicked(booked_ticket_form.java:1640) в Interfaces.booked_ticket_form.access$5300(booked_ticket_form.java:23) в Interfaces.booked_ticket_form$52.mouseClicked(booked_ticket_form.java:597) в java.awt.Component.processMouseEvent(Component.java:6542) в javax.swing.JComponent.processMouseEvent(JComponent.java:3324) в java.awt.Component.processEvent(Component.java:6304) в java.awt.Container.processEvent(Container.java:2239) в java.awt.Component.dispatchEventImpl(Component.java:4889) в java.awt.Container.dispatchEventImpl(Container.java:2297) в java.awt.Component.dispatchEvent(Component.java:4711) в java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) в java.awt.LightweightDispatcher.processMouseEvent(Container.java:4544) в java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) в java.awt.Container.dispatchEventImpl(Container.java:2283) в java.awt.Window.dispatchEventImpl(Window.java:2746) в java.awt.Component.dispatchEvent(Component.java:4711) в java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) в java.awt.EventQueue.access$500(EventQueue.java:97) в java.awt.EventQueue$3.run(EventQueue.java:709) в java.awt.EventQueue$3.run(EventQueue.java:703) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) в java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) в java.awt.EventQueue$4.run(EventQueue.java:733) в java.awt.EventQueue$4.run(EventQueue.java:731) в java.security.AccessController.doPrivileged (собственный метод) в java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) в java.awt.EventQueue.dispatchEvent(EventQueue.java:730) в java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) в java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) в java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) в java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) в java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Переменная, имеющая значение null: movieTicketsMap в классе Movie, который используется в методе setTicketSeatStatus(booked) в класс Билет

Почему я твердо убежден, что оно не должно быть нулевым: это потому, что я убедился, что введенный ключ существует, как это? из-за этого: в моем проекте каждый объект фильма имеет переменную movieTicketsMap, и в этой хеш-карте ключи — это время показа билета + идентификатор его места, а значения — это идентификаторы билетов, и эта карта имеет эта информация обо всех билетах, которые у меня есть на этот фильм. Итак, когда я пытаюсь заменить значение на карте, я передаю время сеанса + идентификатор места в билете... поэтому я не знаю, почему оно возвращает ноль!! Я что-то сделал не так или в чем причина нулевого значения?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»