Wątek przeniesiony 2016-08-13 12:01 z Java przez bogdans.

wyjątki początkujący

2016-08-13 10:24
0

Witam.
Proszę o wytłumaczenie tego zadania. Jak zachowa się program, który jest poniżej gdy zostanie wywołany z różną liczbą argumentów (0, 2, 5) i w którym miejscu mają być te argumenty. Czy wszystkie wywołania programów zakończyły się powodzeniem?

class Stack 
    {
    private String[] elements;
    private int n;

    public Stack(int maxSize) 
        {
        elements = new String[maxSize];
        n = 0;
        }

    public boolean isEmpty() 
        {
        return (n == 0);
        }

    public void push(String element) 
        {
        elements[n++] = element;
        }

    public String pop() 
        {
        return elements[--n];
        }
}

public class Exceptions 
    {

    public static void main (String [] args) 
        {
        Stack myStack = new Stack(3);

        for (String a : args) 
            {
            System.out.println("Proba dodania elementu: " + a);
            myStack.push(a);
            }

        System.out.println("Zawartosc stosu:");
        while (!myStack.isEmpty()) {
            System.out.println(myStack.pop());
        }
    }

}
edytowany 1x, ostatnio: bogdans, 2016-08-13 11:59
1. Kod wstawiaj w znaczniki <code=java></code> - bogdans 2016-08-13 12:00
2. Korzystaj z działu Newbie. - bogdans 2016-08-13 12:01

Pozostało 580 znaków

2016-08-13 11:41
1

Próbowałeś chociaż raz sam spróbować analizować ten kod? To nic trudnego.

Argumenty przekazujemy do programu poprzez linie poleceń i są odbierane przez program w postaci tablicy obiektów String, więc, każdy kolejny argument zajmuję jedno miejsce w tablicy(wielkość tablicy jest zależna od ilości argumentów). Klasa Stack jest bardzo prostą klasą, która w swoim jedynym konstruktorze z argumentem int inicjuję tablice obiektów String o wielkości podanej w argumencie konstruktora, więc na logikę...W metodzie main tworzymy obiekt Stack za pomocą konstruktora z argumentem 3(po tym wywołaniu obiekt Stack posiada zainicjalizowane pole tablicy String o wielkości 3). Następnie iterujemy przez każdy argument przekazany do metody main w postaci String'ów, metoda push klasy Stack odwołuje się do elementru n, który jest inkrementowany za każdym wywołaniem metody w danym obiekcie. Prościej mówiąc, nie trudno zauważyć, że gdy pole n w obiekcie Stack przekroczy wartość 2(wielkość tablicy - 3, elementy: 0, 1, 2) a następnie zostanie wywołana metoda push nastąpi wyjątek ArrayIndexOutOfBoundsException

edytowany 3x, ostatnio: opax92, 2016-08-13 12:03

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0