Problemas missing return statement no Netbeans

tiidle

Membro
Pessoal, estou com o seguinte problema em Java:

public String emitePassageiro()
{
int i;
for (i = 0; i < qtdePassageiro; i++)
return(pa.emitePassageiro());
}

No código acima, dá erro dizendo que: missing return statement

Mas o return está aí. O método pa.emitePassageiro retorna um String em outra classe. Por que será que dá esse erro então?! Obrigado!!
 
Colocar o return fora do ciclo ... Então tu estás a dizer que a função retorna uma String, contudo podes nem sequer entrar no ciclo o que retornaria a função nesse caso ?? Aliás até te digo mais, sem te quere ofender essa função não faz muito sentido!!
 
Isso nao faz sentido.
O código que tu aí tens é +- equivalente a:
public String emitePassageiro() {
return(pa[0].emitePassageiro());
}

certamente que nao é isto que tu queres
 
Pois o teu código está um bocado estranho o teu objectivo seria percorrer o vector e no final devolver a String que representa os passageiros todos, certo?
 
pa.emitePassageiro(); também está errado. (isto é C++) EDIT: não tenho a certeza se é possível fazer pa num Array, peço desculpa se estiver engando.

O correcto é:

pa.get(i).emitePassageiro();


Quanto ao resto do código em si...se reparares bem ele acaba a função logo na primeira iteração do ciclo for, onde retorna logo qualquer coisa. Possivelmente falta-te uma condição. O que é que queres fazer mesmo?
 
Última edição:
Isso vai retornar sempre o valor que está na posição de qtdePassageiro.

O que tens aí não faz sentido nenhum. Se quiseres devolver as posições todas declara um public ArrayList, fazes um for que cicla o "pa" e escreve no array. No fim fazes return de um Array preenchido com a totalidade dos valores. Que basicamente vai ser igual ao "pa", lol, até à posição qtdePassageiro. :)


Por isso a pergunta é, o que é que queres fazer com esse método?
É que vendo bem, não achei ainda um único motivo para isso existir.
 
Desculpem, mas acho que não expliquei direito...

Esse código que tenho aí:

public String emitePassageiro()
{
int i;
for (i = 0; i < qtdePassageiro; i++)
return(pa.emitePassageiro());
}

Bem, esse método, chama um outro metodo que está em outra classe. O metodo da outra classe , que também se chama emitePassageiro() retorna um String. pa[] é um vetor da classe passageiro que tenho aqui também. Então esse método faz sentido, pois quero retornar todos os passageiros que tengo no vetor pa[].
Eu só não sei como faço pra ter um retorno. Desse jeito que está aí, dá o erro de return statement... mas eu preciso retornar dessa forma. Como corrigir o problema??
 
O que estás a tentar fazer está errado.

Se queres retornar todos os passageiros que tens no pa[] porque n devolves do o pa ?? Depois onde precisares de "emitir todos os passageiros" corres entao o array ... Repara tu queres devolver TODOS os passageiros e não um a um ...

De qualquer forma volto a dizer o que estas a tentar fazer está errado e vai contra as prácticas de POO.

pa.emitePassageiro(); também está errado. (isto é C++) EDIT: não tenho a certeza se é possível fazer pa num Array, peço desculpa se estiver engando.

O correcto é:

pa.get(i).emitePassageiro();


Quanto ao resto do código em si...se reparares bem ele acaba a função logo na primeira iteração do ciclo for, onde retorna logo qualquer coisa. Possivelmente falta-te uma condição. O que é que queres fazer mesmo?


Sim consegues fazer pa ... infelizmente consegues ...:002:
 
Última edição pelo moderador:
Estas a usar um Array, ou um Vector, ou um ArrayList?

O "vector pa[]" está noutra classe?

Podes sempre tornar o Array ou ArrayList pa publico, e na outra classe fazes assim.

//imaginando que pa é um ArrayList
ArrayList<passageiro> passageiros = new ArrayList<passageiro> ();
passageiros = passageiro.pa;
 
Pelo o que eu percebi tu queres retornar uma String que representa todos os passageiros, mas o que estás a fazer no teu código por agora é devolver o primeiro passageiro do vector.

o que tens que fazer é percorrer o vector todo e guardar numa String a representação de todos os passageiros, qualquer coisa do género:
Código:
public String emitePassageiro()
    {
          int i;
   String resultado;
   for (i = 0; i < qtdePassageiro; i++) {
      // Concatenar pa[i].emitePassageiro() à String resultado
   }
    
   return resultado;
}
Repara que a String resultado vai "acumular" todas as String que representam cada passageiro presente no vector e depois do ciclo for retornas essa String que representa todos os passageiros.
 
Back
Topo