1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problemas missing return statement no Netbeans

Discussão em 'Programação' iniciada por tiidle, 30 de Maio de 2008. (Respostas: 11; Visualizações: 2505)

  1. 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!!
     
  2. acrobat

    acrobat Power Member

    porque o return ta dentro do ciclo for, se o ciclo nao for executado entao n ha return
     
  3. Então como fazer?
     
  4. el_zeus

    el_zeus Power Member

    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!!
     
  5. arkannis

    arkannis Power Member

    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
     
  6. zyThuM

    zyThuM Power Member

    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?
     
  7. OubeLa

    OubeLa Power Member

    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: 30 de Maio de 2008
  8. Mavors

    Mavors Power Member

    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.
     
  9. 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??
     
  10. el_zeus

    el_zeus Power Member

    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.



    Sim consegues fazer pa ... infelizmente consegues ...:002:
     
    Última edição pelo moderador: 4 de Junho de 2008
  11. OubeLa

    OubeLa Power Member

    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;
     
  12. zyThuM

    zyThuM Power Member

    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.
     

Partilhar esta Página