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.
vous signifiait probablement
return top == -1;
dans isEmpty()
OriginalL'auteur user2321685 | 2013-04-26
Vous devez vous connecter pour publier un commentaire.
Meilleure solution pour votre Pile de mise en œuvre
Si vous devez utiliser de Tableau... Voici problèmes dans votre code et des solutions possibles
OriginalL'auteur rahul maindargi
Parce que vous avez initialisé la
top
variable-1
dans votre constructeur, vous devez incrémenter letop
variable dans votrepush()
méthode avant d'accéder à la matrice. Notez que j'ai changé l'affectation à utiliser++top
:Qui fixera le
ArrayIndexOutOfBoundsException
que vous avez posté sur. Je peux voir d'autres problèmes dans votre code, mais puisque c'est un devoir à la maison, je vais laisser comme "un exercice pour le lecteur." 🙂OriginalL'auteur sigpwned
De la pile mise en Œuvre en Java
Sortie
OriginalL'auteur Isabella Engineer
Voici un exemple de mise en œuvre de la pile en java (en Fonction de la Matrice de mise en œuvre):
appel MyStack:
de sortie:
OriginalL'auteur Soumya Sarkar