Return em 2 atributos no mesmo método

8 respostas
lairylopes

Bom dia galera, bom logo abaixo vou colocar meu código mais pelo que estou vendo o erro que me aparece no java é "unreachable statement" pelo que me parece me corrijam se eu estiver errado mais é que no mesmo método no caso o "getdadosnutri" não é possível dar return em dois atributos no mesmo método bom vendo o código vocês irão entender melhor (obs. parte do código destacado em vermelho, botei todo o código caso o erro não seja onde estou prevendo):

import java.util.*;
import java.sql.*;
import java.io.*;

public class merenda
{
  private String crm;
  private String nomenutri;
  private String nomeesc;
  private String endesc;
  private String nomediresc;
  private String condcozinha;
  private String diadsem;
  private String nomeprato;
  
  public String getdadosnutri ()
  {
    return crm;
    return nomenutri;
  }
  public String getdadosesc ()
  {
    return nomeesc;
    return endesc;
    return nomediresc;
  }
  public String getcondcozinha ()
  {
    return condcozinha;
  }
  public String getdiadsem ()
  {
    return diadsem;
  }
  public String getnomeprato ()
  {
    return nomeprato;
  }
  public void entra_dadosnutri (String crmid,String nnutri)
  {
   crm=crmid;
   nomenutri=nnutri;      
  }
  public void entra_dadosesc (String nesc,String eesc,String ndiresc,String concoz,String nprato,String ddsem)
  {
    nomeesc=nesc;
    endesc=eesc;
    nomediresc=ndiresc;
    condcozinha=concoz;
    nomeprato=nprato;
    diadsem=ddsem;
  }
  public String gerarelatorio ()
  {
    return nomeesc;
    return endesc;
    return nomediresc;
    return crm;
    return nomenutri;
  }  
}

8 Respostas

Reginildo

Esse é um jeito de retornar dois atributos da classe:

String[] valores = new String[] {crm,nomenutri}; //Aqui você coloca os valores para retorno, separados por virgula return valores;

alexfe

Isso não pode ser feito em java, do jeito que vc esta fazendo não é possivel, vc está retornando um string mas isso não é possivel ter varios retorno diretos sem nenhuma condição.

Isso não existe
public String getdadosnutri () 
{ 
return crm; 
return nomenutri; 
}

Isso é o correto

public String getdadosnutri () 
{ 
if (condição 1) {
  return crm; 
}
return nomenutri; 
}

ou 


public String getdadosnutri () 
{ 
if (condição 1) {
  return crm; 
}
else if (condicao 2) {
  return nomenutri; 
}
else {
 return outravariavel;
}
}

Para vc retornar varios atributos tem que trabalhar e retornar HashMap

public HashMap<String, String> getdadosnutri () 
HashMap<String, String> maps = new HashMap<String, String>();
{ 
if (condição 1) {
  maps.put("crm", "valor1"); 
}

if (condição 2) { {
  maps.put("nomenutri", "valor2"); 
}

return maps;
lairylopes

obrigado alexafe, é que no caso essa seria um classe secundaria a classe principal, então pensei que fosse possível usar 2 return em um mesmo método esse o caso que seria para imprimir os resultados finais a saída dos dados, um que seria os dados da nutricionais e ou outro da escola, mais obrigado era mais pra tirar essa duvida. Outra pergunta é possível executar 2 return em um mesmo método se não forem tipo String as variáveis ou mesmo sendo qualquer tipo de variável não é possível 2 return em um mesmo método?

alexfe

Igual eu te falei vc só pode ter um return por vez, se vc quer retornar varios valores de uma vez, vc usa o HasMap ou retona um objeto com quantos atributos vc quizer

nanoverso

A questão não são dois returns no mesmo método, mas sim essa forma com dois returns em sequência, pois executado o primeiro return o o ponteiro de execução volta para o método chamador e nunca executa o segundo return, daí a mensagem do compilador: “unreachable statement”, declaração fora de alcance.

alexfe

Sim amigo nao pode ser feito desse jeito ai não é assim que programa em java por isso da erro

adriano_si

Você só pode retornar um dado por vez, de um único tipo, que deve ser o mesmo tipo de retorno do método. Se você tem dados da Escola, então provavelmente sua modelagem deve se adequar e você deve criar uma classe Escola com seus próprios atributos.

Uma dica não relacionada a sua dúvida mas a programação Java em geral, CORRIJA IMEDIATAMENTE seus nomes de classes, métodos e atributos para a convenção de programação Java. Qualquer coisa, tenho o code convention na minha assinatura, se não, 30 segundos de Google te ajudam a encontrar.

Abs [] e sucesso nos estudos.

lairylopes

muito obrigado adriano e alex estou pesquisando aqui sobre regras e convenções de programação, bastante interessante vou terminar de pesquisa-las e estuda-las e com certeza irei seguir.

Criado 29 de setembro de 2014
Ultima resposta 7 de out. de 2014
Respostas 8
Participantes 5