Olá, Boa noite.
Estou com problemas para verificar um entrada em string, as entradas aceitas só podem ser, “A1, A2, A3, B1, B2, B3, ZX, TH”, se não forem essas deve lançar exceção.
Pensei em fazer varias constantes, mas ficaria feio, pensei em um Enum também, mas não sei utilizar.
Obrigado ~~
Se você quer evitar constantes (sejam variáveis estáticas imutáveis, ou enumerações, ou qualquer outra coisa), pode utilizar uma expressão regular para verificar se a input é válida.
String valida = "B3";
String invalida = "ZH";
String regex = "^([AB][1-3]|ZX|TH)$";
System.out.println(valida + " eh valida? " + valida.matches(regex));
System.out.println(invalida + " eh valida? " + invalida.matches(regex));
Contudo, dessa forma, você só vai saber se é uma input válida ou não. Se você precisa tomar uma decisão baseada na input, vai ter que usar constantes.
No caso eu quero usar constantes, mas como pensei era
Cont1 = ""
Cont2 = ""
Cont3 = “”
Enum é meio que uma lista de constante, certo ?
Como poderia utilizar ?
import java.util.Scanner;
import java.util.Arrays;
class Main {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
String inputStr = stdIn.next();
try {
InputEnum input = InputEnum.valueOf(inputStr);
System.out.println(input);
} catch (IllegalArgumentException ex) {
System.err.println("Entrada inválida. Valores possíveis: " + Arrays.toString(InputEnum.values()));
System.exit(1);
}
}
}
enum InputEnum {
A1, A2, A3, B1, B2, B3, ZX, TH
}