Tableau de pile à l'aide de la pop() et push()

J'ai un problème avec les 2 classes que j'ai créé pour le programme utilise la pile. Le premier problème que je reçois est que lorsque j'essaie d'exécuter le programme, j'obtiens une erreur à l'exécution. Son genre de chose difficile à poser, car il en train de faire plusieurs choses. Il demande la saisie de l'utilisateur à ajouter des numéros à la pile et vérifier si la pile est vide ou pleine. J'ai aussi besoin d'aide pour copier le tableau.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
au IntegerStack.push(IntegerStack.java:24)
au Lab15.principale(Lab15.java:38)

C'est la classe principale qui exécute le programme.

import java.util.Scanner;


public class Lab15 {

    public static void main(String[] args)
    {
        System.out.println("***** Playing with an Integer Stack *****");
        final int SIZE = 5;
        IntegerStack myStack = new IntegerStack(SIZE);
        Scanner scan = new Scanner(System.in);

        //Pushing integers onto the stack
        System.out.println("Please enter an integer to push onto the stack - OR - 'q' to Quit");
        while(scan.hasNextInt())
        {
            int i = scan.nextInt();
            myStack.push(i);
            System.out.println("Pushed "+ i);
        }

        //Pop a couple of entries from the stack
        System.out.println("Lets pop 2 elements from the stack");
        int count = 0;
        while(!myStack.isEmpty() && count<2)
        {
            System.out.println("Popped "+myStack.pop());
            count++;
        }

        scan.next(); //Clearing the Scanner to get it ready for  further input.

        //Push a few more integers onto the stack
        System.out.println("Push in a few more elements - OR - enter q to quit");
        while(scan.hasNextInt())
        {
            int i = scan.nextInt();
            myStack.push(i);
            System.out.println("Pushed "+ i);
        }

        System.out.println("\nThe final contentes of the stack are:");
        while(!myStack.isEmpty())
        {
            System.out.println("Popped "+myStack.pop());
        }

    }

}

C'est la classe qui est la somme des nombres de la pile, qui est ce qui a le des problèmes. C'est là que j'ai peut-être besoin de l'aide de la copie de la matrice. À la fin.

import java.util.Arrays;

public class IntegerStack 
{
    private int stack [];
    private int top; 

    public IntegerStack(int SIZE) 
    {
        stack = new int [SIZE];
        top = -1;
    }

    public void push(int i) 
    {
        if (top == stack.length)
        {
            extendStack();
        }

        stack[top]= i;
        top++;
    }

    public int pop() 
    {
        top --;
        return stack[top];
    }

    public int peek()
    {
        return stack[top];
    }

    public boolean isEmpty() 
    {
        if ( top == -1);
        {
            return true;
        }
    }

    private void extendStack()
    {
        int [] copy = Arrays.copyOf(stack, stack.length);
    }
}

Toute aide ou d'orientation sera appréciée.

Je vous suggère de parcourir le code dans votre débogueur pour voir ce qu'il est vraiment en train de faire. Il y a une Pile dans le JDK déjà et bien que vous ne pouvez pas copier, je suis sûr que vous êtes autorisé à le lire et à apprendre de lui.
vous signifiait probablement return top == -1; dans isEmpty()

OriginalL'auteur user2321685 | 2013-04-26