临时写的,说明肯定够,还望见谅,觉得不好的大可以提出,本人写java本来就是新手而已我的算法大体是为避免重复触发事件(因为检查器可能是几秒钟检查一次系统时间,这个时候可能是同一分钟内,上次检查以及时间吻合,触发了事件,而这次就不必再触发)
从而为判断的四种条件各设置一个校验GregorianCalendar对象,即当这次单个条件符合且整体条件符合(即可触发事件)时,设置整个GregorianCalendar对象为当前时间,下次进入就不会触发但是现在是,当一个条件符合时,诸如分钟(即对后一个条件),相应的标识GregorianCalendar对象cal__min是更新为cal(当前系统时间),但之后始终会与cal保持一致 。  这是为什么,我print出唯一的给cal__min赋值语句的前面if的条件可是false呀,同时之前已经被更新了时间了,实在不解

解决方案 »

  1.   

    现在发现可能不是 GregorianCalendar的问题,我在另外的方法中声明TimeCheck的对象时
    ,第一次判断中标后(比如每小时的第几分钟符合,)其对应的标识GregorianCalendar对象,在调用ring之前就已经变为当前时间了好奇怪!!!!诸如我在 test.java中这样声明
    Date now_date=new Date();
    GregorianCalendar cal_er = new GregorianCalendar();
    TimeCheck check_a=new TimeCheck();
    check_a.setChecker();
    while (true){
    now_date=new Date();
    check_a.printMark();  
    cal_er.setTime(now_date);
    boolean test_bl=check_a.ring(int_a,int_b,int_c,int_d,cal_er);
    System.out.println(test_bl);}
    第一次print出true之后,其printMark方法检验,发现其对应中标符合的标识GregorianCalendar变量就会始终更新为当前时间。
      

  2.   

    if (bl&&change_day) cal__day=cal;对象不可以直接用=的,会有问题的