Ajuda com o método Excluir() de uma Fila!

10 respostas
F

[color=darkred]Pessoal, estou com problemas em um trabalho aqui.
Preciso cria um método que exclua um determinado item da fila.
O código que eu tenho é o seguinte.[/color]

import javax.swing.JOptionPane;

class Filas {	
    private int tamanho;
    private String[] fila;
    private int qtde;
 
    
    public Filas(int x){
    	tamanho = x;
    	fila = new String[tamanho];
    	qtde = -1;    	
    }
	
	public void push(){
   		if(qtde == tamanho-1){
     		JOptionPane.showMessageDialog(null,"Fila cheia...");
     		return;
   		}
   		qtde++;
   		fila[qtde] = JOptionPane.showInputDialog("Entre com o nome: ");
   		printall();
	}
        
         
	public void printall(){
        if(qtde == -1)    
     		JOptionPane.showMessageDialog(null,"Fila vazia...");
        else{
            String str = "Fila atual:\n";
            String [] fila_aux = new String[tamanho]; //nao pode ser qtde+1 por causa de fila=fila_aux

            //Transfere para fila auxiliar
            for(int i=0;i<=qtde;i++){
     		   str += fila[i] + "\n";
     		   fila_aux[i]=fila[i];
     		   fila[i]=null;  //apaga conteúdo
            }
            
            fila = fila_aux;
     		   
     		JOptionPane.showMessageDialog(null,str);   
    }
  }
}

class J_Exerc1 {
 	
 	public static void main(String args[])  {
 	
    	Filas aFila = new Filas(4);
		int menu = 0;
                menu  = Integer.parseInt(JOptionPane.showInputDialog("Escolha a opção desejada...\n" + "1- Inserir" + "\n2- Excluir" + "\n3- Imprimir"));
                
                switch (menu) {
                    case 1: aFila.push();
                    case 2: aFila.printall();
                       
      }            
   }
}

[color=darkred]Li alguns tópicos, mas sou iniciante em java, e não consegui achar um lógica plausível para me ajudar.
Se puderem eu ficaria agradecido.
Obrigado![/color]

10 Respostas

E
switch (menu) {  
                    case 1: aFila.push();  
                    case 2: aFila.printall();

Cuidado que em Java, sempre que você terminar um case, é aconselhável você usar um break, senão vai ter alguns problemas.

Já começou a escrever o método “pop” (excluir)?

F
entanglement:
switch (menu) {  
                    case 1: aFila.push();  
                    case 2: aFila.printall();

Cuidado que em Java, sempre que você terminar um case, é aconselhável você usar um break, senão vai ter alguns problemas.

Já começou a escrever o método "pop" (excluir)?

Isso mesmo, foi erro meu :)
Apenas esqueci de colocar...

É exatamente isso que eu preciso saber como que faz, é usando o método POP que se exclui?

E

Em vez de “push” e “pop” eu daria os nomes de “incluir” (ou inserir) e “excluir” (ou remover) , se você está fazendo isso como um trabalho de escola.
Acho que é mais certinho usar os nomes que o professor deu às operações da fila - se ele usou “push” e “pop”, use “push” e “pop”.
Se ele usou “anhäufen” e “entstapeln” use “anhaeufen” e “entstapeln” :slight_smile: - sei lá se seu professor é alemão ou japonês (nesse caso, segundo o Google Translator, “積み重ね” e “スタックを解除” - sei lá se isso está certo

R

E ae cara estou passando o que fiz até agora resolvi o problema já está inserindo o que faltou foi colocar o comando break depois do case porque se não todos os cases acontecerão e como é uma repetição deve ser colocado um loop while para continua inserindo até lota ou vc digitar sair está assim até agora:

class Filas {     
    private int tamanho;  
    private String[] fila;  
    private int qtde;  
  
      
    public Filas(int x){  
        tamanho = x;  
        fila = new String[tamanho];  
        qtde = -1;        
    }  
      
    public void push(){  
        if(qtde == tamanho-1){  
            JOptionPane.showMessageDialog(null,"Fila cheia...");  
            return;  
        }  
        qtde++;  
        fila[qtde] = JOptionPane.showInputDialog("Entre com o nome: ");  
        printall();  
    }  
          
           
    public void printall(){  
        if(qtde == -1)      
            JOptionPane.showMessageDialog(null,"Fila vazia...");  
        else{  
            String str = "Fila atual:\n";  
            String [] fila_aux = new String[tamanho]; //nao pode ser qtde+1 por causa de fila=fila_aux  
  
            //Transfere para fila auxiliar  
            for(int i=0;i<=qtde;i++){  
               str += fila[i] + "\n";  
               fila_aux[i]=fila[i];  
               fila[i]=null;  //apaga conteúdo  
            }  
              
            fila = fila_aux;  
                 
            JOptionPane.showMessageDialog(null,str);     
    }  
  }  
}  
  
public class Trabalho {  
      
    public static void main(String args[])  {  
      
        Filas aFila = new Filas(4);
        boolean sair = true;
        while(sair){
        int menu = 0;  
                menu  = Integer.parseInt(JOptionPane.showInputDialog("Escolha a opção desejada...\n" + "1- Inserir" + "\n2- Excluir" + "\n3- Imprimir\n4 - Sair"));  
                  
                switch (menu) {  
                    case 1: aFila.push();  
                    break;
                    case 2: aFila.printall();
                    break;
                    case 4: sair = false;
                    break;
                }
                         
      }              
   }  
}
Qualquer dúvida só me fala abraço
Hebert_Coelho

Cara, não duplique os seus posts: http://guj.com.br/java/283791-ajuda-com-o-metodo-excluir-de-uma-fila

Não passou nem 30 minutos e vc simplesmente criou o mesmo post novamente.

Aprenda a esperar e não poluir o tópico.

Da próxima vez espere algumas horas, caso alguém não responde poste algum comentário no seu próprio post.

Duplicar post é contra a regra do forum.

F

Cara, acho que eu fiz sem querer…
Não fiz por mal, dei dois cliques na tela e foi pra opção de editar.
Aí eu mandei um enviar, mas nem vi que duplicou.
Foi mal…

Bom pessoa, e quanto ao método excluir?
Alguém pode me dar uma força?

Obrigado pela ajuda nos nomes, e break :slight_smile:

F
rcarauta:
E ae cara estou passando o que fiz até agora resolvi o problema já está inserindo o que faltou foi colocar o comando break depois do case porque se não todos os cases acontecerão e como é uma repetição deve ser colocado um loop while para continua inserindo até lota ou vc digitar sair está assim até agora:
class Filas {     
    private int tamanho;  
    private String[] fila;  
    private int qtde;  
  
      
    public Filas(int x){  
        tamanho = x;  
        fila = new String[tamanho];  
        qtde = -1;        
    }  
      
    public void push(){  
        if(qtde == tamanho-1){  
            JOptionPane.showMessageDialog(null,"Fila cheia...");  
            return;  
        }  
        qtde++;  
        fila[qtde] = JOptionPane.showInputDialog("Entre com o nome: ");  
        printall();  
    }  
          
           
    public void printall(){  
        if(qtde == -1)      
            JOptionPane.showMessageDialog(null,"Fila vazia...");  
        else{  
            String str = "Fila atual:\n";  
            String [] fila_aux = new String[tamanho]; //nao pode ser qtde+1 por causa de fila=fila_aux  
  
            //Transfere para fila auxiliar  
            for(int i=0;i<=qtde;i++){  
               str += fila[i] + "\n";  
               fila_aux[i]=fila[i];  
               fila[i]=null;  //apaga conteúdo  
            }  
              
            fila = fila_aux;  
                 
            JOptionPane.showMessageDialog(null,str);     
    }  
  }  
}  
  
public class Trabalho {  
      
    public static void main(String args[])  {  
      
        Filas aFila = new Filas(4);
        boolean sair = true;
        while(sair){
        int menu = 0;  
                menu  = Integer.parseInt(JOptionPane.showInputDialog("Escolha a opção desejada...\n" + "1- Inserir" + "\n2- Excluir" + "\n3- Imprimir\n4 - Sair"));  
                  
                switch (menu) {  
                    case 1: aFila.push();  
                    break;
                    case 2: aFila.printall();
                    break;
                    case 4: sair = false;
                    break;
                }
                         
      }              
   }  
}
Qualquer dúvida só me fala abraço

Opa, agora sim :)
E quanto ao método excluir?
Pode me dar uma dica?
Obrigado

E

É o contrário do método push, não?
Se alguma coisa vai ser incrementada no push, ela deve ser decrementada no pop :slight_smile:

R

Fiz essa solução aqui pode haver soluções melhores, mas essa funciona legal da uma olhada ai. Ta imprimindo, saindo, inserindo, e excluindo. Ele nesse código ta excluindo sempre o ultimo item da uma olhada.

import javax.swing.JOptionPane;

class Filas {
	private int tamanho;
	private String[] fila;
	private int qtde;

	public Filas(int x) {
		tamanho = x;
		fila = new String[tamanho];
		qtde = -1;
	}

	public void push() {

		if (qtde == tamanho - 1) {
			JOptionPane.showMessageDialog(null, "Fila cheia...");
			return;
		}
		qtde++;
		
		fila[qtde] = JOptionPane.showInputDialog("Entre com o nome: ");
		
		printall();
	}

	public void pop() {
		for (int i = 0; i < fila.length; i++) {
			if(qtde == i){
				fila[i] = "n";
				qtde--;
			}
		}
		printall();
	}

	public void printall() {
		if (qtde == -1)
			JOptionPane.showMessageDialog(null, "Fila vazia...");
		else {
			String str = "Fila atual:\n";
			String[] fila_aux = new String[tamanho]; // nao pode ser qtde+1 por
														// causa de
														// fila=fila_aux

			// Transfere para fila auxiliar
			for (int i = 0; i <= qtde; i++) {
				if (fila[i] != "n") {
					str += fila[i] + "\n";
					fila_aux[i] = fila[i];
					fila[i] = null;
				}// apaga conteúdo
			}

			fila = fila_aux;

			JOptionPane.showMessageDialog(null, str);
		}
	}
}

public class Trabalho {

	public static void main(String args[]) {

		Filas aFila = new Filas(4);
		boolean sair = true;
		while (sair) {
			int menu = 0;
			menu = Integer.parseInt(JOptionPane
					.showInputDialog("Escolha a opção desejada...\n"
							+ "1- Inserir" + "\n2- Excluir"
							+ "\n3- Imprimir\n4 - Sair"));

			switch (menu) {
			case 1:
				aFila.push();
				break;
			case 2:
				aFila.pop();
				break;
			case 3:
				aFila.printall();
				break;
			case 4:
				sair = false;
				break;
			}

		}
	}
}
F
rcarauta:
Fiz essa solução aqui pode haver soluções melhores, mas essa funciona legal da uma olhada ai. Ta imprimindo, saindo, inserindo, e excluindo. Ele nesse código ta excluindo sempre o ultimo item da uma olhada.
import javax.swing.JOptionPane;

class Filas {
	private int tamanho;
	private String[] fila;
	private int qtde;

	public Filas(int x) {
		tamanho = x;
		fila = new String[tamanho];
		qtde = -1;
	}

	public void push() {

		if (qtde == tamanho - 1) {
			JOptionPane.showMessageDialog(null, "Fila cheia...");
			return;
		}
		qtde++;
		
		fila[qtde] = JOptionPane.showInputDialog("Entre com o nome: ");
		
		printall();
	}

	public void pop() {
		for (int i = 0; i < fila.length; i++) {
			if(qtde == i){
				fila[i] = "n";
				qtde--;
			}
		}
		printall();
	}

	public void printall() {
		if (qtde == -1)
			JOptionPane.showMessageDialog(null, "Fila vazia...");
		else {
			String str = "Fila atual:\n";
			String[] fila_aux = new String[tamanho]; // nao pode ser qtde+1 por
														// causa de
														// fila=fila_aux

			// Transfere para fila auxiliar
			for (int i = 0; i <= qtde; i++) {
				if (fila[i] != "n") {
					str += fila[i] + "\n";
					fila_aux[i] = fila[i];
					fila[i] = null;
				}// apaga conteúdo
			}

			fila = fila_aux;

			JOptionPane.showMessageDialog(null, str);
		}
	}
}

public class Trabalho {

	public static void main(String args[]) {

		Filas aFila = new Filas(4);
		boolean sair = true;
		while (sair) {
			int menu = 0;
			menu = Integer.parseInt(JOptionPane
					.showInputDialog("Escolha a opção desejada...\n"
							+ "1- Inserir" + "\n2- Excluir"
							+ "\n3- Imprimir\n4 - Sair"));

			switch (menu) {
			case 1:
				aFila.push();
				break;
			case 2:
				aFila.pop();
				break;
			case 3:
				aFila.printall();
				break;
			case 4:
				sair = false;
				break;
			}

		}
	}
}

Muito bom cara!
Era isso mesmo que eu queria saber, principalmente a parte comentada!
Continuarei postando dúvidas aqui, e, espero que me continuem me ajudando HAHA
Obrigado pessoal!

Criado 3 de outubro de 2012
Ultima resposta 8 de out. de 2012
Respostas 10
Participantes 4