Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

sobre opcoes de preenchimento de uma variavel

boa tarde, gostaria de saber se existe uma forma de deixar explicito no código uma lista de possíveis valores que uma variável pode receber, por exemplo, a variável felinos só pode receber gatos, leões e leopardos, e não dar a opção de colocar cachorro por exemplo. Isso e algo que coloco no backend ou só me preocupo com isso na interface?

7 respostas

Boa tarde Kaique! Você pode fazer essa validação no código na interface ou no banco de dados. Fica a seu critério. Eu até pesquisei como fazer isso via código de maneira simples, sem utilizar algo como um if, mas não consegui achar nada.

Um if simples resolve isso facilmente:

if (felinos != "gato" && felinos != "leão" && felinos != "leopardo") {
    System.out.println("errado");
} else {
    System.out.println("certo");
}

Você pode ter uma lista, enum ou outro tipo que funcione com os possíveis valores e usar o método contains para verificar se a lista contém a resposta:

String resposta = "Cachorro";
List<String> felinos = new ArrayList<String>();
felinos.addAll(Arrays.asList("Gato", "Leao"));
if(felinos.contains(resposta)){
    System.out.println("É felino.");
} else{
    System.out.println("Não é felino.");
}

Daí você pode escolher o que fazer, no lugar de sysout pode ter um loop que só continuará caso a resposta esteja na lista de felinos.

Show de bola Felipe! Sua solução é melhor que a minha, pois caso entre mais um felino, basta adicionar o mesmo na lista. No meu caso, ficaria ruim pois o if ia crescer muito.

enum é uma boa aplicação, mas se vai ser permitido a seleção de dado pelo usuário, você pode limitar as opções fazendo verificação na GUI.

solução!

Alô, meus alunos! Tá todo mundo aí?

Kaique, nesse caso "felinos" é um tipo de dado da sua aplicação! Sendo assim, como todo felino tem atributos e comportamentos em comum, seria o caso de vc criar uma super classe chamada Felino que seria estendida por todas as classes de felinos! Ou caso eles só tenham comportamentos em comum, então vc poderia criar uma interface! Então vc teria algo como, considerando que teremos atributos e comportamentos em comum:

public abstract class Felino {
     // atributos e comportamentos comuns aos felinos.
}

public class Gato extends Felino {
     // atributos e comportamentos dos gatos.
}

public class Leao extends Felino {
     // atributos e comportamentos dos leões.
}

public class Leopardo extends Felino {
     // atributos e comportamentos dos leopardos.
}

E para criar uma lista de felinos que não aceite um objeto de uma suposta classe Cachorro que não estende de Felino:

List<Felino> felinos = new ArrayList<>();
felinos.add( new Gato() ); // ok!
felinos.add( new Leao() ); // ok!
felinos.add( new Leopardo() ); // ok!
felinos.add( new Cachorro() ); // não compila!

Aprendizado para a vida: Validações no front-end são legais pois dão maior fluidez à aplicação! No entanto, seus dados precisam ser sempre validados no back-end em última instância!

Grande abraço, meus alunos! E bons estudos!

Interface e herança podem resolver esse caso, isso é POO.

Obrigado galera, vou estudar as respostas que deram, mas realmente o caso dos felinos e uma coisa de herança.