Array em atributo de classe

1 resposta
P

ola gostaria que se pudessem me ajudar com uma duvida que estou tendo

para criar um array sendo atributo de uma classe sem limitar o tamanho,
estou tentando fazer uma pilha e nao sei qual o erro que esta acontecendo

olha minha classe:

package Exercises;

public class Pilha {
	
	private Object[] elemento;
	private int tamanho = 0;
	private int posicao = 0;
	
	public void insere(Object a){
		this.elemento[this.posicao] = a;
		this.posicao++;
		this.tamanho = this.elemento.length;
	}
	
	public Object retira(){
		this.posicao--;
		Object ret = this.elemento[this.posicao];
		this.elemento[this.posicao] = null;
		return ret;
	}
	
	public boolean isCheia(){
		if (this.tamanho == this.posicao){
			return true;
		}
		else {
			return false;
		}		
	}
	
	public boolean isVazia(){
		boolean teste = true;
		for (int i = 0;i < this.elemento.length; i++){
			if (this.elemento[i] == null){
				teste = true;
			}
			else{
				teste = false;
                                                                break;
			}
		}
		
		return teste;
	}
	
	public int getTamanho(){
		return this.tamanho;
	}
	
	public String mostraPilha(boolean ordem){
		String pil = new String();
		if (isVazia()){
			return "A pilha esta vaiza";
		}
		else {
			if(ordem){
				for (int i = (this.elemento.length - 1); i >= 0;i--){
					pil += this.elemento[i]+"\n";
				}
			}
			else {
				for (int i = 0;i < this.elemento.length;i++){
					pil += this.elemento[i]+"\n";
				}
			}		
			return pil;
		}
	}
}

nesta classe nao apresenta erro algum no eclipse porem criei uma outra classe “testaPilha” fiz uma instancia da pilha e na hora de inserir algum elemento, ele da erro…
testei mudando no atributo elemento pra essa forma

private Object[] elemento = new Object[5];

e quando alterei dessa forma, limitando o tamanho, ele funcionou tudo corretamente…

alguem pode me ajudar e me explicar como deve declarar este atributo em array?
gostaria de deixar dessa forma sem tamanho limitado, pq qria permitir que fosse inserindo sem limite e depois informava o tamanho…

vlw…

1 Resposta

williamdasflores

Existe o ArrayList, que você insere sem limite.
Outra coisa, você criou seu atributo como privado. Sendo assim, você não consegue instanciar em outra classe.

tente:

public Object[] elemento;
Criado 14 de abril de 2011
Ultima resposta 14 de abr. de 2011
Respostas 1
Participantes 2