Ae pessoal finalmente comecei a implementar meu código pra fila de prioridade...mas não estou sabendo fazer a impressao de uma fila de determinada prioridade...
Vou colar aqui uma parte do código..
//FilaDePrioridade.javapublicclassFilaDePrioridade{privateFilav[]=newFila[4];privateNoFilaf;publicFilaDePrioridade(){inti;//indice contadorfor(i=0;i<4;i++){v[i]=newFila();}}// Inserir na fila de uma dada prioridadepublicvoidinsereFilaPrior(Stringnomex,Stringservicox,intpriorx){Pessoap=newPessoa(nomex,servicox);NoFilat=newNoFila(p,priorx);if(!v[priorx].filaVazia()){v[priorx].setInicio(t);v[priorx].setFim(t);}else{v[priorx].getFim().setProx(t);v[priorx].setFim(t);}}
É o seguinte…estão armazenadas 4 FILAS…uma em cada posicao do vetor…
Eu quero imprimir uma determinada fila( ela vem na chamada do metodo)
Imprimir o nome e o serviço…que sao os atributos de pessoa…que ta dentro de cada Nó…
Entederam !?
Tipo esse assim:
// Metodo que imprime as pessoas da fila
public void imprimeFila()
{ NoFila t = inicio;
while(t!=null)
{ Pessoa p = t.getInfo();
System.out.println("Nome: "+p.getNome());
System.out.println("CPF: "+p.getCPF());
System.out.println("Telefone: "+p.getTelefone());
t = t.getProx(); }
}
Gabriel_Davi
O meu atual ta assim
public void imprimeFilaPrior(int priorx)
{ NoFila t = inicio;
while(t!=null)
{ Pessoa p = t.getInfo();
System.out.println("Nome: "+v[priorx].getNome());
System.out.println("Serviço: "+v[priorx].getServico());
t = t.getProx(); }
}
aparecendo os eguinte erro
cannot find symbol - variable inicio.
mas ela foi declarada na classe Fila
Marky.Vasconcelos
A variavel inicio está na classe Fila mas o método imprimeFilaPrior está na classe File?
Se não o compilador não sabe daonde vem essa variavel porque nessa classe ela não foi instanciada.
Gabriel_Davi
Imprime Fila Prior ta na classe Fila de prioridade
Entao eu devo colocar o ImprimeFila Prioridade na classe fila !?
Marky.Vasconcelos
Não mas quando usar
NoFilat=inicio;
Use a variavel de file
NoFilat=algumaFila.inicio;
Gabriel_Davi
No caso então eu teria que usar o vetor ne onde esta armazenado as filas !?
Tipo:
NoFila t = v[priorx].inicio
!?
Eu fiz assim mas diz que não tenho acesso
Desculpa a burrice [:P]
Marky.Vasconcelos
Então inicio deve ser privado certo?
Crie um Getter pra ele e acesse
NoFilet=v[priorx].getInicio();
Gabriel_Davi
Ahhhn essa parte compilou valeu =D
aki o código como ta agora
public void imprimeFilaPrior(int priorx)
{ NoFila t = v[priorx].getInicio();
while(t!=null)
{ Pessoa p = t.getInfo();
System.out.println("Nome: "+v[priorx].getNome());
System.out.println("Serviço: "+v[priorx].getServico());
t = t.getProx(); }
}
Diz ki nao ta achando o metodo getNome…mais ta aki ¬¬
O que mais tem de errado !?
ja to tomando tempo dmais de vc
Usa os métodas da Pessoa ali você ta usando a fila denovo
EDIT: Porque eu fico escrevendo file invés de fila?
Gabriel_Davi
RESOLVIDO
Bom gente dpois da ajuda de voces e algumas consultas na faculdade meu imprime ficou o seguinte:
//Classe Fila// Metodo que imprime uma filapublicvoidimprimeFila(){NoFilat=inicio;Pessoap=null;while(t!=fim){p=t.getInfo();System.out.println("Nome: "+p.getNome());System.out.println("Serviço:"+p.getCPF());t=t.getProx();}System.out.println("Nome:"+p.getNome());System.out.println("Serviço:"+p.getCPF());}
Uso a classe fila de prioridade pra imprimir determinada fila
Só que ta com um problema...
Ele só imprime se for inserido mais de uma pessoa ¬¬...inserindo uma somente, ele não imprime ¬¬
Ela imprime sempre a PRIMEIRA PESSOA...e repetido...
por exemplo..
se eu insiro 3 pessoas, ele imprime so as duas primeiras...
Ou seja..ele nunca imprime a ULTIMA...
Gabriel_Davi
Bom consegui imprimir a fila de cada prioridade…mas agora gostaria de imprimir a fila F…a fila toda…
Como faço isso !?
vou colar aki os atributos das classes
public class FilaDePrioridade
{
private Fila v[]=new Fila [4];
private NoFila f;
public FilaDePrioridade()
public class Fila
public class Fila
{
private NoFila inicio;
private NoFila fim;
private int cont;
public class NoFila
public class NoFila
{
private Pessoa info;
private int prior;
private NoFila prox;
Marky.Vasconcelos
Qual é a fila toda?
é o atributo v da classe FilaDePrioridade?
Gabriel_Davi
Acho que sim ne…
Pois cada fila está em uma posicao do vetor…
Entao a fila toda seria todo o vetor ne…
Marky.Vasconcelos
Ué eu não sei, o programa é seu não entendi direito suas classes^^ mas se for o vetor faça assim:
// Metodo que imprime uma fila
public void imprimeFila()
{NoFila t = inicio;
while(t!=fim)
{ Pessoa p = t.getInfo();
System.out.println("Nome: "+p.getNome());
System.out.println("Serviço:"+p.getCPF());
t = t.getProx(); }
if(t==fim)
{Pessoa p2 = t.getInfo();
System.out.println("Nome:"+p2.getNome());
System.out.println("Serviço:"+p2.getCPF());
}
}
Marky.Vasconcelos
Se você tiver algum objeto null em algum lugar vai lançar isso.
Faça testes antes de imprimir
publicvoidimprimeFila(){if(inicio==null)return;//Já para o método aqui se for nullNoFilat=inicio;while(t!=fim){if(t.getInfo()==null)t=t.getProx();//Já vai pro proxima pessoa se for nullPessoap=t.getInfo();System.out.println("Nome: "+p.getNome());System.out.println("Serviço:"+p.getCPF());t=t.getProx();}if(t==fim){Pessoap2=t.getInfo();System.out.println("Nome:"+p2.getNome());System.out.println("Serviço:"+p2.getCPF());}
Gabriel_Davi
Deu certo \o//////////////////////////
noss muito obrigado…valeu mesmo hehehehe =DDDDD
daki a poco venho aki d novo tirar duvidas com o remove
huahuahua
valeeeu \o//
Gabriel_Davi
Problema d novo ¬¬
na impressão da fila total…
Ele sempre imprime 4 mensagens de que não há pessoas na fila… mesmo se houver…
Se houver ele fica revezando.
Imprime a pessoa, imprime mensagem de erro, imprime pessoa, imprime mensagem de erro…