Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Java - Chyba v kódu

Dobrý den, níže přikládám část kódu, konkrétně jednu metodu. Nevíte kde je chyba když mi při stisknutí tlačítka 0 místo návratu do menu programu vyskakuje hláška : java.lang.ArrayIndexOutofBoundsException ? :/
Díky moc!

private void vypsatDenniMereni() {
        int vstup = -1;
        do {
            System.out.println("--- Počasí - Výpis měření ---");
            vypsatStanice();
            System.out.println("0: konec ");
            System.out.print("Zadejte index stanice: ");
            vstup = scanner.nextInt();
            System.out.println();

        } while(vstup < 0 || vstup > pocasi.pocetStanic());
        
        HashMap<Long, DenniMereni> mapa = pocasi.getStanice().get(vstup - 1).getMereni();
        if (mapa.size() == 0) {
            System.out.println("Zvolená stanice neobsahuje žádná denní měření!");
            return;
        }
        
        if(pocasi.pocetStanic() > 0)
        {
            scanner.nextLine();
            zadavaniDatumu:
            do {
                System.out.print("Zadejte datum denního měření: ");
                String datum = scanner.nextLine();

                SimpleDateFormat format = new SimpleDateFormat();
                for (String formatDatumu : Pocasi.FORMATY_DATUMU) {
                    format. applyPattern(formatDatumu);
                    try {
                        long millis = format.parse(datum).getTime();
                        mereni = mapa.get(millis);
                        break zadavaniDatumu;
                    } catch (ParseException ex) {
                    }
                }
            } while (true);

      
            for (int i = 0; i < DenniInterval.values().length; i++) {
                DenniInterval denniInterval = DenniInterval.values()[i];
                System.out.println(denniInterval);
                System.out.println("  Naměřená teplota: "  + mereni.getSeznamMerenich().get(denniInterval).getTeplota() + " (°C)");
                System.out.println("  Naměřený tlak: "  + mereni.getSeznamMerenich().get(denniInterval).getTlak() + " (hPa)");
                System.out.println("  Naměřená rychlost větru: " +  mereni.getSeznamMerenich().get(denniInterval).getRychlostVetru() + " (km/h)");
                System.out.println("  Naměřená vlhkost: "  + mereni.getSeznamMerenich().get(denniInterval).getVlhkost()  + " (%)");
            }
        }

}

loading...
Předmět Autor Datum
get(vstup - 1) Index -1 tam asi mít nebudeš.
Wikan 05.02.2014 17:56
Wikan
KZBale pokud smazu -1 tak se nic nemeni...
KZB 05.02.2014 19:57
KZB
Kde to tu chybu hlásí?
Wikan 05.02.2014 20:02
Wikan
Nemělo by za } while(vstup < 0 || vstup > pocasi.pocetStanic()); být ještě něco jako if vstup =…
gilhad 05.02.2014 20:29
gilhad
Taky bych rekl... BTW: Ten kod je docela masakr. Treba ten nekonecny while s navestim, je lahudka..… poslední
MaSo 06.02.2014 11:35
MaSo

Nemělo by za

 } while(vstup < 0 || vstup > pocasi.pocetStanic());

být ještě něco jako

if vstup == 0 { return ; }

aby to při zadání té nuly nevypisovalo stanici ale rovnou skončilo?

Zpět do poradny Odpovědět na původní otázku Nahoru

loading...