Validador de data

3 respostas
J

Olá, estou tentando fazer um validador de data, nele eu tenho um if e como condição: se mes = jan ou mar ou mai ou jul ou ago ou out ou dez e dia >0 <32 {data valida} else {data invalida}, e por ai vai. O problema é que se o dia for maior q 12 da data invalida, e mes pode ser qualquer numero q da data valida. O código ta ai

package valdata;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class ValData implements ActionListener {

    JFrame janela = new JFrame("Validar data");
    JTextField caixa1 = new JTextField();
    JTextField caixa2 = new JTextField();
    JTextField caixa3 = new JTextField();
    JButton botao = new JButton("VALIDAR DATA");
    Font fonte = new Font("Segoe UI", Font.BOLD, 10);
    Font fonte2 = new Font("Segoe UI", Font.BOLD, 25);
    Font fonte3 = new Font("Segoe UI", Font.BOLD, 15);
    JLabel label = new JLabel("nVálida");
    String dia = caixa1.getText();
    
public ValData(){
    editarJanela();
}
    
    public void editarJanela(){
        janela.setVisible(true);
        janela.setSize(150,140);
        janela.setLocationRelativeTo(null);
        janela.setDefaultCloseOperation(EXIT_ON_CLOSE);
        janela.setResizable(false);
        janela.setLayout(null);
        janela.add(caixa1);
        janela.add(caixa2);
        janela.add(caixa3);
        janela.add(botao);
        janela.add(label);
        caixa1.setBounds(16, 24, 25, 25);
        caixa2.setBounds(45, 24, 25, 25);
        caixa3.setBounds(75, 24, 54, 25);
        caixa1.setFont(fonte3);
        caixa2.setFont(fonte3);
        caixa3.setFont(fonte3);
        botao.setBounds(16, 50, 112, 25);
        botao.setFont(fonte);
        botao.addActionListener(this);
        label.setBounds(27, 75, 112, 25);
        label.setFont(fonte2);
        label.setVisible(false);
    }
    
    public static void main(String[] args) {
        new ValData();
    }

    
    public void actionPerformed(ActionEvent ae) {
        String d = caixa1.getText();
        String m = caixa1.getText();
        String a = caixa1.getText();
        
        int dia = Integer.parseInt(d);
        int mes = Integer.parseInt(m);
        int ano = Integer.parseInt(a);
        
        if(
            ano>=0 && ((mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12 && mes<13) && dia>0 && dia<32)
              || ((mes==4 || mes==6 || mes==9 || mes==11) && dia>0 && dia<31)
              || ((mes==2) && dia>0 && dia<29)
              || (ano % 4 == 0 && mes==2 && dia>0 && dia<30)
                ) {
        
                label.setVisible(true);
                label.setForeground(Color.green);
                label.setText(" Válida");
        
        }else{
            label.setVisible(true);
            label.setForeground(Color.red);
            label.setText("Inválida");
        }

        
        
        
    }
    
}

desde ja vlw

3 Respostas

S

Você pode mudar de void para booleano, de forma que você faz os testes procurando os erros, tipo janeiro e 32 dias, ou fevereiro com 30. E caso não encontre nenhum erro, o último retorno é verdadeiro.

Victtor_Freitas

Testei aqui funcionou, tem alguns verificações que está fazendo sem necessidade mas ta funcionando. Quais valores você ta passando que esta dando erro no dia 12?

J

Desculpem, mas achei o erro. As strings d, m, a vem todas do texto da caixa1. Obrigado por responder e desculpem o erro besta, mas fora isso ta funcionando perferitamente

Criado 17 de junho de 2018
Ultima resposta 18 de jun. de 2018
Respostas 3
Participantes 3