Pilha em int

3 respostas
E

Alguem me ajude, como passo um int no metodo Empilha? esse metodo precisa retornar inteiro? :cry:
segue o codigo.
obs>se estiver postado na seçao errada peco que remova por favor.

/* Implemente a Classe Pilha com os seguintes Métodos

Empilha(int v)

Desempilha()

Elemento_Topo()

Mostra_Pilha()

Limpa_Pilha()

*/

//Classe Pilha

import javax.swing.JOptionPane;

public class Pilha{

private	int tamanho;

private int posicao;

private	String conteudo[];
//Construtor
public Pilha(int t){
	this.tamanho=t;
	this.posicao=-1;
	this.conteudo=new String[t];
	
}//fim do construtor

//Metodos gerais

//Metodo para empilhar
public void Empilhar(String v){
	
	if(estaCheia())
		return;
		
		this.posicao ++; 
		this.conteudo[this.posicao]=v;
					
			 	
}//fim do metodo Empilhar

//Metodo para desempilhar
public String Desempilhar(){
			
	if(estaVazia())
		return "";
		
		String aux= this.conteudo[this.posicao];
		
		this.posicao--; //coloca o elemento na primeira posicao
		
		this.conteudo[this.posicao]="";
		return aux; 
						
}//fim do metodo desempilhar	

public void Limpar_Pilha(){
	
}	

//Metodo ultimo que retorna o ultimo elemento
public String Elemento_Topo(){
	
	return this.conteudo[this.posicao];

}//fim do metodo ultimo

//Metodo para verificar se a pilha esta vazia
public boolean estaVazia(){
	
	if(this.posicao == -1){
		JOptionPane.showMessageDialog(null,"Pilha Vazia","Pilha",JOptionPane.INFORMATION_MESSAGE);
		
		return true;
		}//fim do if
	
	else
	    return false;
				
}//fim do metodo estaVazio

//Metodo para verificar se a pilha esta cheia	
public boolean estaCheia(){
	
	if(this.posicao == this.tamanho){
	JOptionPane.showMessageDialog(null,"Pilha cheia","Pilha",JOptionPane.INFORMATION_MESSAGE);
		
		return true;
		}//fim do if
	
	else
	    return false;
		
}//fim do metodo estaCheio

//Metodo numero de elementos
public int numElementos(){
	
	return this.posicao;
			
	}//fim do metodo numElementos
	
	//metodo Mostra_Pilha
	public void Mostra_Pilha(){
		
		System.out.println(this.conteudo);
	}//fim do metodo Mostra_Pilha

}//fim da classe

3 Respostas

FieroddPJ

o metodo empilhar, não precisa retornar nada, talvez um boolean dizendo se empilhou ou nao, como vc implementou seu metodo empilha para receber uma string vc precisa converter o int antes

String.valueOf(numero); ou Integer.toString(numero);

mas tem um problema aqui

//imagine que this.posição == 10
//aus recebe o elemento do topo, ate aqui ok

String aux= this.conteudo[this.posicao];

//aqui vc decrementa o indice da pilha
//ou seja, agora seu indice vale 9
this.posicao--; //coloca o elemento na primeira posicao

//aqui vc anula o valor do array, no indice 9 - erro!
this.conteudo[this.posicao]="";

:wink:

E

“Fierodd”:
o metodo empilhar, não precisa retornar nada, talvez um boolean dizendo se empilhou ou nao, como vc implementou seu metodo empilha para receber uma string vc precisa converter o int antes

String.valueOf(numero); ou Integer.toString(numero);

mas tem um problema aqui

//imagine que this.posição == 10
//aus recebe o elemento do topo, ate aqui ok

String aux= this.conteudo[this.posicao];

//aqui vc decrementa o indice da pilha
//ou seja, agora seu indice vale 9
this.posicao--; //coloca o elemento na primeira posicao

//aqui vc anula o valor do array, no indice 9 - erro!
this.conteudo[this.posicao]="";

:wink:

por exemplo: esse metodo String.valueOf(numero) o coloco aonde? :???:
e no metodo empilhar se colocar void e no parametro int da erro.
segue o codigo:

1- Implemente a Classe Pilha com os seguintes Métodos

Empilha(int v)

Desempilha()

Elemento_Topo()

Mostra_Pilha()

Limpa_Pilha()*/

//Classe Pilha

import javax.swing.JOptionPane;

public class Pilha{

private	int tamanho;

private int posicao;

private	String conteudo[]=String.valueOf(conteudo);//seria aqui para converter para inteiro???
//Construtor
public Pilha(int t){
	this.tamanho=t;
	this.posicao=-1;
    this.conteudo=new int[t];
	
}//fim do construtor

//Metodos gerais

//Metodo para empilhar ->aqui preciso no parametro de um inteiro, ao compilar da erro!!!!!!!!!!!!!!!!!
public void Empilhar(int v){
	
	if(estaCheia())
		return;
		
		this.posicao ++; 
		this.conteudo[this.posicao]=v;
					
			 	
}//fim do metodo Empilhar

//Metodo para desempilhar
public String Desempilhar(){
			
	if(estaVazia())
		return "";
		
		String aux= this.conteudo[this.posicao];
		
		this.posicao--; //coloca o elemento na primeira posicao
		
		this.conteudo[this.posicao]="";
		return aux; 
						
}//fim do metodo desempilhar	

public void Limpar_Pilha(){
	
}	

//Metodo ultimo que retorna o ultimo elemento
public String Elemento_Topo(){
	
	return this.conteudo[this.posicao];

}//fim do metodo ultimo

//Metodo para verificar se a pilha esta vazia
public boolean estaVazia(){
	
	if(this.posicao == -1){
		JOptionPane.showMessageDialog(null,"Pilha Vazia","Pilha",JOptionPane.INFORMATION_MESSAGE);
		
		return true;
		}//fim do if
	
	else
	    return false;
				
}//fim do metodo estaVazio

//Metodo para verificar se a pilha esta cheia	
public boolean estaCheia(){
	
	if(this.posicao == this.tamanho){
	JOptionPane.showMessageDialog(null,"Pilha cheia","Pilha",JOptionPane.INFORMATION_MESSAGE);
		
		return true;
		}//fim do if
	
	else
	    return false;
		
}//fim do metodo estaCheio

//Metodo numero de elementos
public int numElementos(){
	
	return this.posicao;
			
	}//fim do metodo numElementos
	
	public void Mostra_Pilha(){
		
		System.out.println(this.conteudo);
	}

}//fim da classe

FieroddPJ

Sua pilha esta armazenando strings, e vc quer inserir um int tipo 1 ou 3
o String.ValueOf(numero) converte ints em strings

exemplo:

int i = 3;
String str = String.ValueOf(i);
empilhar(str);
Criado 25 de agosto de 2006
Ultima resposta 27 de ago. de 2006
Respostas 3
Participantes 2