Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Controllo date in java

  1. #1

    Controllo date in java

    abbiamo iniziato oggi lo studio delle interfacce grafiche.
    ho creato tre combo box per la data, e vorrei controllare che nn siano sbagliate (ad esempio 31 febbraio).
    ho creato questo metodo:
    codice:
    private static boolean controllaData(String data){
            int mese=Integer.parseInt(data.substring(0,2));  //ERRORE
            int giorno=Integer.parseInt(data.substring(3,5));
            if(mese==2 && giorno>29){
                return false;
            }
            if(mese==4 && giorno>31){
                return false;
            }
            if(mese==6 && giorno>31){
                return false;
            }
            if(mese==9 && giorno>31){
                return false;
            }
            if(mese==11 && giorno>31){
                return false;
            }
            else{
                return true;
            }
        }
    poi ho messo il codice da eseguire in un if:
    codice:
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
            String data=jComboBox1.getSelectedItem().toString()+"/"+jComboBox2.getSelectedItem().toString()+"/"+jComboBox3.getSelectedItem().toString();
            
            if(controllaData(data)){  //ERRORE
                Persona p=new Persona(jTextField1.getText(), jTextField2.getText(), jTextField3.getText(), jTextField4.getText(), jTextField5.getText());
                jTextField1.setText("");
                jTextField2.setText("");
                jTextField3.setText("");
                jTextField4.setText("");
                jTextField5.setText(data);
                jTextField6.setText(Persona.matricola(p));
            }
            else{
                JOptionPane.showMessageDialog(null, "rifai tutto!!");
            }
        }
    nessun errore in compilazione, ma mi da degli errori in esecuzione.
    nello specifico alle righe dove ho messo il commento ERRORE.
    ma nn riesco a capire dove ho sbagliato.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Posta l'errore che ottieni...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    il problema era nel formato dei giorni e dei mesi.
    avrei dovuto metterci uno 0 davanti ai numeri singoli.
    ho risolto facendo due cicli for e mettendo il .parseInt a base 10:
    codice:
    private static String[] riempiMese(){
            String[] mesi=new String[12];
            int conta=1;
           for(int i=0; i<9; i++){
                mesi[i]="0"+conta;
                conta++;
            }
            for(int i=9; i<mesi.length; i++){
               mesi[i]=""+conta;
                conta++;
            }
            return mesi;
        }
    private static boolean controllaData(String data){
            int giorno=Integer.parseInt(data.substring(0,2),10);
    
            int mese=Integer.parseInt(data.substring(3,5),10);
            if(mese==2 && giorno>29){
                return false;
            }
            if(mese==4 && giorno>30){
                return false;
            }
            if(mese==6 && giorno>30){
                return false;
            }
            if(mese==9 && giorno>30){
                return false;
            }
            if(mese==11 && giorno>30){
                return false;
            }
            else{
                return true;
            }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da fermat
    ho risolto facendo due cicli for e mettendo il .parseInt a base 10:
    Il parseInt, senza l'argomento radix è già per default in base 10!

    Comunque per il controllo data poteva forse bastarti un semplice SimpleDateFormat settato come non-lenient, con poche (e pulite) righe di codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.