Retornar elementos contidos numa List<String>

5 respostas
jeovane.reges

Olá a todos, boa noite.
Pessoal, meu problema consiste no seguinte.

1. Tenho uma List com alguns elementos dentro dela e ao percorre-la gostaria de ir exibindo os elementos contidos nela.
2. Os elementos dessa minha list devem ser retornados com String e por essa razão criei um método do tipo String para tal.

O problema é que ao retornar o primeiro elemento dessa minha list simplesmente deixa de executar o método. O que eu gostaria de saber é o que devo fazer pra cada elemento contido nessa list ser retornado como uma String única. Abaixo tem um código bem simples e enxuto do que eu gostaria de fazer.
private String TestPriori() {
    Scanner sc = new Scanner(System.in).useDelimiter("\r\n");

    listPriori.add("João Pedro");
    listPriori.add("José");
    listPriori.add("Eduardo");

    for (String names : listPriori) {
        if (names.equals("João Pedro")) {
            return names;
        } else {
            System.out.print("Digite sobre nome para " + names + ": ");
            String sobreNome = sc.nextLine();
            return names + " " + sobreNome;
        }
    }
    return null;
}

public static void main(String[] args) {
    TestListPriori tp = new TestListPriori();
    System.out.println(tp.TestPriori());
}
Alguém sabe dizer o que devo fazer para alcançar tal objetivo? Desde já obrigado pela ajuda de todos. Abraços.

5 Respostas

Juliobrjp

Olá! Séu método só retorna o primeiro elemento porque tem um if comparando com o nome João Pedro.
Como na lista existe esse nome então ele só retorna o mesmo.

g4j

O colega Juliobrjp já deu a dica.

Outra dica: Faça um debug passo a passo no código. O problema está na lógica.

E

Eu entendi o que você queria fazer (o seu jeito de pensar é interessante, já que é bem adequado para “lazy evaluation” - ou seja, funciona bem com listas infinitas ou outras coisas que aparecem em linguagens funcionais).

Em algumas linguagens (como Scala) existe algo que faz as coisas exatamente do jeito que você faz, só que o nome dessa coisa é “yield”, não “return” (esse “yield” não existe em Java, infelizmente).

jeovane.reges

Olá pessoal, bom dia.
Eu sei que o meu erro ta na lógica, o exemplo que citei acima é apenas algo parecido com um problema que estou enfrentando atualmente, na prática não é bem isso que estou querendo fazer. Irei descrever abaixo o que estou querendo fazer.

Na prática o que estou querendo fazer é o seguinte, imaginem que dou como entrada 3 arquivos, onde o primeiro executo logo de “cara”, então esse primeiro arquivo me retorna uma lista de resultados e ao selecionar um desses resultados executo o segundo arquivo que me retorna uma outra lista de resultados e ao selecionar um dos resultados desse meu segundo arquivo por fim executo o terceiro.

No entanto, da maneira que meu código se encontra atualmente ele executa apenas o primeiro arquivo e simplesmente não executa os demais.
Meu código encontra-se da seguinte maneira abaixo.

public String executeQueryVCD(String valueClick) throws Exception { for (ExtractsContentVCD e : sortList()) { if (e.getNameVCD().equalsIgnoreCase(e.getVCDMain())) { queryJena = new ExecuteQueryJena(e.getServiceURI(), e.getQueryVCD()); return queryJena.printQuery(); } else { if (!"".equals(valueClick) || valueClick != null) { queryJena = new ExecuteQueryJena(e.getServiceURI(), e.getQueryVCD()); for (String vcde : getDestinationVCD(e)) { queryJena.setParameterList(vcde + "," + valueClick); } return queryJena.printQuery(); } else { break; } } } return ""; }
Só lembrando que esse meu sistema é Web.

jeovane.reges

Lazy Evaluation é? Hehe é que tento ser o mais simples possível pra tentar explicar melhor o meu problema. Ai de repente seja por isso que passo essa impressão, ao menos é o que acho né :stuck_out_tongue:

Em algumas linguagens (como Scala) existe algo que faz as coisas exatamente do jeito que você faz, só que o nome dessa coisa é “yield”, não “return” (esse “yield” não existe em Java, infelizmente).

Já que essa funcionalidade não vem pré-definida em java, então como construí-la pra funcionar de maneira similar?
Obrigado pelo seu feedback entanglement, sempre colaborando nos meus pôsters.

Criado 9 de maio de 2013
Ultima resposta 10 de mai. de 2013
Respostas 5
Participantes 4