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…
[code]//FilaDePrioridade.java
public class FilaDePrioridade
{
private Fila v[]=new Fila [4];
private NoFila f;
public FilaDePrioridade()
{
int i; //indice contador
for(i=0; i<4; i++)
{
v[i] = new Fila();
}
}
// Inserir na fila de uma dada prioridade
public void insereFilaPrior(String nomex,String servicox,int priorx)
{Pessoa p = new Pessoa(nomex,servicox);
NoFila t = new NoFila(p,priorx);
if (!v[priorx].filaVazia())
{ v[priorx].setInicio(t) ;
v[priorx].setFim(t) ; }
else { v[priorx].getFim().setProx(t) ;
v[priorx].setFim(t) ; }
}
[/code]
Como fazer agora para a impressao !?
Faz um for para passar pelos elementos da fila e imprime. Exemplo de iteração em array:
String[] array = new String[3];
array[0] = "Elemento 1";
array[1] = "Elemento 2";
array[2] = "Elemento 3";
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]); // imprime o elemento do array no console
}
for(Fila f : v){
System.out.println(f);//Caso tenho sobreescrito toString na classe Fila
}
for(Fila f : v){
System.out.println(f.getAlgo() +" "+f.getResto());
}
A opção mais façil é sobreescrever toString na classe Fila, vai ser algo assim
public class Fila{
private String nomex;
private int prio;
@Override
public String toString(){
return "Pessoa: "+nomex+" com prioridade:"+prio;
}
}
Dessa maneira você pode passar o objeto como parametro em um println e não vai ver algo como File@f15
Outra forma de usar o for seria usando o chamado “for especial”, ou em outras linguagens “foreach” …(Lembrando q isso so funciona no Java 5.0)
String[] array = new String[]{"Elemento 1", "Elemento 2", "Elemento 3"};
for (String ar : array) {
System.out.println(ar);
}
[]'s
Nao consegui :shock:
É 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(); }
}
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
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.
Imprime Fila Prior ta na classe Fila de prioridade
Entao eu devo colocar o ImprimeFila Prioridade na classe fila !?
Não mas quando usar
NoFila t = inicio;
Use a variavel de file
NoFila t = algumaFila.inicio;
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]
Então inicio deve ser privado certo?
Crie um Getter pra ele e acesse
NoFile t = v[priorx].getInicio();
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
public void imprimeFilaPrior(int priorx)
{ NoFila t = v[priorx].getInicio();
while(t!=null)
{ Pessoa p = t.getInfo();
System.out.println("Nome: "+p.getNome());
System.out.println("Serviço: "+p.getServico());
t = t.getProx(); }
}
Usa os métodas da Pessoa ali você ta usando a fila denovo
EDIT: Porque eu fico escrevendo file invés de fila?
RESOLVIDO
Bom gente dpois da ajuda de voces e algumas consultas na faculdade meu imprime ficou o seguinte:
[code]
//Classe Fila
// Metodo que imprime uma fila
public void imprimeFila()
{NoFila t = inicio;
Pessoa p = 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());
} [/code]
Uso a classe fila de prioridade pra imprimir determinada fila
public void imprimeFilaPrior(int priorx)
{ v[priorx].imprimeFila();}
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…
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;
Qual é a fila toda?
é o atributo v da classe FilaDePrioridade?
Acho que sim ne…
Pois cada fila está em uma posicao do vetor…
Entao a fila toda seria todo o vetor ne…
Ué eu não sei, o programa é seu não entendi direito suas classes^^ mas se for o vetor faça assim:
for(Fila fila : v)
fila.imprimeFila();
Da erro 
java.lang.NullPointerException
at Fila.imprimeFila(Fila.java:72)
at FilaDePrioridade.imprimeFilaF1(FilaDePrioridade.java:49)
Aki o imprimefila
// 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());
}
}
Se você tiver algum objeto null em algum lugar vai lançar isso.
Faça testes antes de imprimir
public void imprimeFila()
{
if(inicio == null) return;//Já para o método aqui se for null
NoFila t = inicio;
while(t!=fim)
{
if(t.getInfo() == null)t = t.getProx();//Já vai pro proxima pessoa se for null
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());
}