Imprimir fila

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

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