Jak poprawić, żeby nie było: NullPointerException

Jak poprawić, żeby nie było: NullPointerException
Piotr Zięba
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:5
0

Chciałbym aby jakiś tam przycisk wywoływał stronę z numerem "x" w adresie, w zależności od tego, w którym wierszu zaznaczę check. Kolumna z check jest druga, a w trzeciej kolumnie są kolejno wprowadzone do bazy różne miejsca. Mapy mam ponumerowane od 0... Niestety pojawia mi się NullPointerException i nie wiem, co mam poprawić...

Kopiuj
private void showMapActionPerformed(java.awt.event.ActionEvent evt) {                                        
        
        for (int i = 1; i < table.getRowCount(); i++) {
            if (table.getModel().getValueAt(i, 2) != null) {
                if (table.getModel().getValueAt(i, 1).toString() == "true") {
                     int x= Integer.parseInt(table.getModel().getValueAt(i, 2).toString());
                     x=x-1;
                     String www = "adresMojejStrony" + x + ".htm";
                    try {
                        String URL = www;
                        java.awt.Desktop.getDesktop().browse(java.net.URI.create(URL));

                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, e.getMessage());
                    }
                }
            }
        }         

Czy ktoś mi pomoże, bo to pewnie proste...
To po drugim zaznaczeniu checka zadziała, ale po pierwszym wywala wyjątek.

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Kod wstawiamy w znaczniki kolorujące składnię – ```java przed kodem, a po kodzie samo ```
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:3561
1
Piotr Zięba napisał(a):

Chciałbym aby jakiś tam przycisk wywoływał stronę z numerem "x" w adresie, w zależności od tego, w którym wierszu zaznaczę check. Kolumna z check jest druga, a w trzeciej kolumnie są kolejno wprowadzone do bazy różne miejsca. Mapy mam ponumerowane od 0... Niestety pojawia mi się NullPointerException i nie wiem, co mam poprawić...

Kopiuj
            if (table.getModel().getValueAt(i, 1).toString() == "true") {
Kopiuj

Czy ktoś mi pomoże, bo to pewnie proste...
To po drugim zaznaczeniu checka zadziała, ale po pierwszym wywala wyjątek.

Zdawało mi się, że już widziałem WSZYSTKO nt "porównania true", ale mnie przelicytowałeś, następne linie też są dyskusyjne, wszystkie za wyjątkiem klamerek. Nie wiem, na czym wzorujesz ten styl, ale zmień źródła wiedzy.

Co do tematu, BYĆ MOŻE w tej linii jest rzucany NPE, ale to ty masz tą wiedzę płynącą z pełnej treści wyjątku.


Bo C to najlepszy język, każdy uczeń ci to powie
Charles_Ray
Treść wyjątku zwykle jest następująca: „java.lang.NullPointerException: null” :)
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:6 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
0

Żeby wiedzieć skąd ten NullPointer musisz wyświetlić/zalogować StackTrace. Najlepiej za pomocą jakiegoś logera. Najlepiej za pomocą Logback


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
Charles_Ray
Albo użyć debuggera :)
Piotr Zięba
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • Postów:5
0

No cóż, uczę się...
Ale bardzo dziękuję za odpowiedź Panu Kamilowi.
Trudno będąc geografem przez prawie 30 lat, stać się nagle programistą :)
Ważne, że nawet po pięćdziesiątce ma się chęci, jeśli nie do zmiany profesji to przynajmniej do zapoznania się z czymś ciekawym :)
Ale sobie poradziłem! To, co poniżej, działa mi tak jak chcę.

Kopiuj
private void showMapActionPerformed(java.awt.event.ActionEvent evt) {                                        

        for (int i = 1; i < table.getRowCount(); i++) {
            if (table.getModel().getValueAt(i, 1) != null) {
                String www = "jakiśAdresMojejStrony" + i + ".htm";
                try {
                    String URL = www;
                    java.awt.Desktop.getDesktop().browse(java.net.URI.create(URL));
                } catch (Exception e) {
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
            }
        }
        this.refresh();
    }      
Charles_Ray
Czasami jest zaskakujące, kto może siedzieć po drugiej stronie ekranu :) służymy pomocą, powodzenia!
O1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.