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;
        }