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

[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]

[code]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();
                   
  }            

}
}[/code]

[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]

                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)?

[quote=entanglement][code]
switch (menu) {
case 1: aFila.push();
case 2: aFila.printall();

[/code]

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)?
[/quote]

Isso mesmo, foi erro meu :slight_smile:
Apenas esqueci de colocar…

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

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

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:

[code]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;
            }
                     
  }              

}
} [/code] Qualquer dúvida só me fala abraço

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.

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:

[quote=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:

[code]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;
            }
                     
  }              

}
} [/code] Qualquer dúvida só me fala abraço[/quote]

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

É 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:

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.

[code]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;
		}

	}
}

}[/code]

[quote=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.

[code]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;
		}

	}
}

}[/code][/quote]

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!