Bom galera, meu problema é o seguinte, eu estou estudando pilhas, listas e filas na facudade.
O professor pediu p/ agnt fazer uma classe de pilha com as operações básicas.
Eu fiz e talz. Porém na hora de rodar, o compilador me aponta um erro ArrayIndexOutOfBoundsException, em todas as minhas estruturas em que eu verifico os elementos do array.
O problema, é que, mesmo quando o index é 0, ele fala dá o ArrayIndexOutOfBoundsException.
Olha o codigo ai
[code]public class Pilha {
private int topo;
private String[] tamanho=new String[50];
private boolean vazio;
public void PUSH(Pilha p, String x){//x é um elemento qualquer a ser inserido na pilha.
if(p.ISEMPTY(p)==false){
System.out.println("A pilha está cheia");
}else{
for(int i=0;i<=tamanho.length;i++){
if(tamanho[i]==null){
tamanho[i]=x;
break;
}
}
}
}
public String TOP(Pilha p){
String elemento="";
for(int i=0;i<=tamanho.length;i++){
if(tamanho[i]==null){
elemento=tamanho[i-1];
break;
}
break;
}
return elemento;
}
public String POP(Pilha p){
String elemento = "";
if(p.ISFULL(p)==true){
tamanho[50]=null;
}else if (p.ISEMPTY(p)==true) {
System.out.println("A pilha está vazia");
}
for(int i=0;i<=tamanho.length;i++){
if(tamanho[i]==null){
tamanho[i-1]=null;
break;
}
break;
}
return elemento;
}
public void INIT(Pilha p){
this.topo = -1;
this.vazio=true;
}
public boolean ISEMPTY(Pilha p){
for(int i=0;i<=tamanho.length;i++){
if(tamanho[i]==null){
vazio = true;
}
else{
vazio = false;
}
}
return vazio;
}
public boolean ISFULL(Pilha p){
for(int i=0;i<=tamanho.length;i++){
if(tamanho[i]==null){
vazio = false;
}
else{
vazio = true;
}
}
return vazio;
}
}[/code]
Um exemplo que eu tentei utilizar
[code]public class Questao1 {
/**
* @param args
*/
public static void main(String[] args) {
Pilha p = new Pilha();
p.INIT(p);
p.PUSH(p, "5");
p.TOP(p);
}
}[/code]
o erro gerado foi:
[quote]Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 50
at Pilha.ISEMPTY(Pilha.java:65)
at Pilha.PUSH(Pilha.java:10)
at Questao1.main(Questao1.java:11)
[/quote]
Desde ja, agradeço a ajuda de todos.