• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Index 0 out of bounds for length 0 problem z kodem Java

Cloud VPS
0 głosów
2,383 wizyt
pytanie zadane 25 czerwca 2020 w Java przez Paweł123 Nałogowiec (33,540 p.)
edycja 25 czerwca 2020 przez Paweł123

Witam
Ucze się Javy i mam problem z kodem.
Przerabiam książkę Sierra K. - Java. Rusz głową! - Wydanie 2 i podany ponieżej kod nie działa. Kod został skopiowany z przykładowaych kodów.

Wyskakuje komunikat:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0

    at ExTester.main(ExTester.java:6)

Kod, który powinien działać.

class MojeEx extends Exception { }

public class ExTester {

    public static void main(String[] args) {
        String test = args[0];
        try {
            System.out.print("p");
            zaryzykuj(test);
            System.out.print("a");
        } catch (MojeEx e) {
            System.out.print("a");
        } finally {
            System.out.print("n");
        }
        System.out.print("a");
    }

    static void zaryzykuj(String t) throws MojeEx {
        System.out.print("i");

        if ("tak".equals(t)) {
            throw new MojeEx();
        }
        System.out.print("j");
    }
}

Czy ktos wie w czym jest problem?

Wynik tego kodu powinien być taki:

2 odpowiedzi

0 głosów
odpowiedź 25 czerwca 2020 przez Aisekai Nałogowiec (42,190 p.)
Pewnie nie podajesz mu nic na wejściu do programu (args.length==0). Wtedy args rzeczywiście ma rozmiar 0, więc nie ma elementu o indeksie 0. Odwołując się do elementu o indeksie 0, długość tablicy musi być większa od 0.
komentarz 25 czerwca 2020 przez Paweł123 Nałogowiec (33,540 p.)
To co mam zrobić, żeby zadziałało?
komentarz 25 czerwca 2020 przez Aisekai Nałogowiec (42,190 p.)

Jeżeli uruchamiasz program za pomocą cmd, to możesz podać argumenty podczas uruchomienia ( https://www.learnjavaonline.org/en/Compiling_and_Running_with_Arguments )

Natomiast, raczej bym zrezygnował z tego i zwyczajnie Skanerem wewnątrz programu bym wczytał jakąś wartość.

 

Edit: Jak kompiliujesz i jak uruchamiasz program?

komentarz 26 czerwca 2020 przez Paweł123 Nałogowiec (33,540 p.)
Korzystam ze środowiska IntelliJ IDEA
komentarz 26 czerwca 2020 przez Aisekai Nałogowiec (42,190 p.)
No to jeżeli korzystasz z Intellij to prawdopodobnie nie podajesz do programu argumentów które są zawarte w tablicy args. Albo w Edit Configurations je podaj, albo zmień to na Scanner zamiast args[0].
0 głosów
odpowiedź 25 czerwca 2020 przez mibdbz Gaduła (4,300 p.)
Tablica args jest pusta. Nic w niej nie ma. Nigdzie nic do niej nie wkładasz. Nawet jej nie inicjalizujesz. Próbujesz się do niej odwołać i wpisać to co w niej jest (choć nie ma nic) do Stringa test.

Odwołując się do zerowego indexu tablicy (args[0]), wyrzucany jest wyjątek, który mówi że przekroczyłeś wielkość tablicy. Ponieważ nic nie zawiera nie możesz się odnieść do żadnego miejsca bo żadne miejsce nie istnieje.

Możesz wcześniej wpisać coś do zerowego indexu tablicy poprzez :

https://javastart.pl/baza-wiedzy/java-podstawy-jezyka/tablice-jednowymiarowe

Podobne pytania

0 głosów
1 odpowiedź 1,085 wizyt
pytanie zadane 6 czerwca 2019 w Python przez Ventre90 Obywatel (1,170 p.)
0 głosów
1 odpowiedź 437 wizyt
+1 głos
1 odpowiedź 879 wizyt
pytanie zadane 3 grudnia 2021 w C# przez chrystian Gaduła (4,780 p.)

93,487 zapytań

142,420 odpowiedzi

322,772 komentarzy

62,903 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...