Amigos, para aprendizado, desenvolvi um código, onde formulo uma conta para um controle que preciso, , baseado na entrada de algums dados, como dia, mes, hora, minutos, ano, código de usuário, ( chave ) é um numero gerado pelo meu programa ) ( comando ) também um numero gerado pelo meu programa e ( licencas ) também gerado pelo meu programa. bom, entro com esses dados, e para validar um campo numérico, se foi preenchido ou não, , estou tratando com try catch, mas, por exemplo, o que aprendi foi, não se deve usar o try em RunTimeException. ou, não se trata erros em tempo de execução com try/catch . o que quero saber,
entendi errado ? estou falando besteira ? como poderia tratar por exemplo, tratar isto, em um campo usando o while, for, ou outra maneira.
classe codigoAcesso
import javax.swing.*;
public class codigoAcesso {
int dia, mes, hora, minutos , minuto, ano, codigoUsuario, comando, chave, licencas ,
totalSomaDia , divisaoAnoChave , somaChave, somaGeral , somaLicenca ;
String DIA, MES , HORA , MINUTOS , ANO , CODIGOUSUARIO, COMANDO , CHAVE , LICENCAS ;
codigoAcessoErros aviso ;
codigoAcessoErros numero ;
JOptionPane mensagem = new JOptionPane();
public codigoAcesso() {
aviso = new codigoAcessoErros();
numero = new codigoAcessoErros();
DIA = "" ; MES = "" ; HORA = "" ; MINUTOS = "" ; ANO = "" ;
CODIGOUSUARIO = "" ; CHAVE = "" ; LICENCAS = "" ; COMANDO = "" ;
dia = '0'; mes = '0'; hora = '0'; minutos = '0'; ano = '0';
codigoUsuario = '0'; chave = '0'; licencas = '0'; comando = '0';
}
public void dadosCodigoAcesso() {
setDia();
setMes();
setHora();
setMinutos();
setcodigoUsuario();
setAno();
setcomando();
setChave();
setLicencas();
}
public void setDia() {
dia = numero.solicitaNumeroReal("Digite o dia");
}
public void setMes() {
mes = numero.solicitaNumeroReal("Digite o mês");
}
public void setHora() {
hora = numero.solicitaNumeroReal("Digite a Hora");
}
public void setMinutos() {
minutos = numero.solicitaNumeroReal("Digite os Minutos");
if ((minutos > 0) && (minutos < 9))
minutos = 0 ;
else
minuto = minutos-(minutos%10);
}
public void setAno() {
ano = numero.solicitaNumeroReal("Digite o Ano");
}
public void setcodigoUsuario() {
codigoUsuario = numero.solicitaNumeroReal("Digite o código de usuário");
CODIGOUSUARIO = Integer.toString(codigoUsuario);
codigoUsuario = Integer.parseInt(CODIGOUSUARIO.substring(1,CODIGOUSUARIO.length()));
}
public void setcomando() {
comando = numero.solicitaNumeroReal("Digite o comando");
}
public void setChave() {
chave = numero.solicitaNumeroReal("Digite a chave");
}
public void setLicencas() {
licencas = numero.solicitaNumeroReal("Quantidade de licencas");
}
public int getLicencas() {
licencas = licencas * 2 ;
return licencas;
}
public int getComando() {
// comando = Integer.parseInt(COMANDO); não converter se o JOptPane ja receber em inteiro, o setComando = numero.solicitaNumeroReal
return comando;
}
public int getcodigoUsuario () {
//codigoUsuario = codigoUsuario ;
return codigoUsuario;
}
public int getAno() {
return ano;
}
public int getHora() {
return hora;
}
public int getMinutos() {
minutos = minuto ;
return minutos;
}
public int getDia() {
// DIA = Integer.toString(dia);
return dia;
}
public int getMes() {
// MES = Integer.toString(mes);
return mes ;
}
public int getChave() {
return chave;
}
public int getSoma() {
int soma = dia + mes + hora + minutos ;
totalSomaDia = soma * soma ;
divisaoAnoChave = chave / ano ;
somaChave = divisaoAnoChave + chave ;
somaLicenca = licencas * 2 ;
somaGeral = totalSomaDia + somaLicenca + somaChave + comando + ano ;
return soma ;
}
public void mostraCodigoAcesso() {
mensagem.showMessageDialog(null, " Dia : " +getDia() + " Mês : " + getMes() + " Hora : " + getHora() + " Minutos : " + getMinutos()
+ " \n Ano : " +getAno() + " Código do Usuário : " + getcodigoUsuario() + " Comando : " + getComando()
+ "\n Licencas: " + getLicencas() + " Chave : " + getChave() + "\n\n SOMA É : " +getSoma()
+ "\n Código de Acesso é : " +somaGeral);
}
}
a classe que trata os erros.
import javax.swing.JOptionPane;
public class codigoAcessoErros {
private String aviso;
private int numero;
JOptionPane erro = new JOptionPane();
public codigoAcessoErros() {
numero = 0;
}
public String getString() {
return aviso;
}
public int getNumero() {
return numero;
}
public String solicitaString(String mensagem) {
for (;;) {
try {
aviso = JOptionPane.showInputDialog(mensagem) ; // caso a string seja diferente de vazio, interrompe o laço
if (!aviso.trim().equals(""))
break;
JOptionPane.showMessageDialog(null, "Preenchimento obrigatório, o campo \nnão pode ficar em branco !!" +
"","Mensagem de erro", JOptionPane.ERROR_MESSAGE );
} catch ( java.lang.NumberFormatException e) {
aviso = JOptionPane.showInputDialog(null,"Outro erro,!\nDigite novamente !",JOptionPane.ERROR_MESSAGE);
}
}
return aviso;
}
public int solicitaNumeroReal (String mensagem) {
for(;;) { //laço infinito, somente o break para
int selecionado;
Object[] options = {"OK","CANCELAR"};
try {
numero = Integer.parseInt(solicitaString(mensagem)); // JOptionPane.showInputDialog(null,numero);
break;
} catch ( NumberFormatException e) {
JOptionPane.showMessageDialog(null, "incorreto, entre com um \nvalor numérico válido !!"
+ "","Mensagem de erro", JOptionPane.ERROR_MESSAGE );
erro.showOptionDialog(null, "Incorreto, entre somente\n com um valor numérico !!","Mensagem de erro",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,null, options, options[0]);
} catch ( NullPointerException e) {
JOptionPane.showMessageDialog(null, "o programa sera finalizado !!"
+ "","Mensagem de erro", JOptionPane.ERROR_MESSAGE );
System.exit(0);
}
}
return numero;
}
}
// desta forma esta errado, não fazer try em run time exception.
/*
int selecionado;
Object[] options = {"OK","CANCELAR"};
/*
selecionado = JOptionPane.showOptionDialog(null,"Clique OK para Continuar", "aviso",JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE,null, options, options[0]);
if ( selecionado == 0)
JOptionPane.showMessageDialog(null," clicou no ok ");
else {
JOptionPane.showMessageDialog(null," clicou no cancelar ");
return aviso;
}
*/
a classe TesteCodigoAcesso
public class testeCodigoAcesso {
public static void main(String[] args) {
codigoAcesso codigo = new codigoAcesso();
codigo.dadosCodigoAcesso();
codigo.mostraCodigoAcesso();
}
}