本帖最后由 ftkj_Iverson 于 2012-02-02 14:48:38 编辑

解决方案 »

  1.   

    a0                 a1
     |_________________|        b0                 b1
             |_________________|a1和b1是大端,a0和b0是小端。先判断出谁的大端大,这里是b1大。
    然后b0如果小于a1,那么有交集,交集就是b0至a1,否则没交集第二题没看明白。。
      

  2.   

    import java.io.IOException;
    import java.util.Date;public class a45q { /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

         
          Date AStart=new Date();
          AStart.setTime(77L);//第一段开始时间
          Date AEnd=new Date();
          AEnd.setTime(80L);//第一段结束时间
          Date BStart=new Date();
          BStart.setTime(9L);//第二段开始时间
          Date BEnd=new Date();
          BEnd.setTime(80L);//第二段结束时间
          if(AStart.after(AEnd)||BStart.after(BEnd)||AStart.getTime()==AEnd.getTime()||BStart.getTime()==BEnd.getTime())
          {
           System.out.println("输入的时间段有误");
          }
          else if(BStart.before(AStart))//b段的开始时间位于a段的相对位置,有5种可能
          {
           if(BEnd.before(AStart))//在b段开始时间在a段开始时间之前的情况下,b段的结束时间也有5种可能
           {
           System.out.print("无交集");
           }
           else if(BEnd.getTime()==AStart.getTime())
           {
           System.out.print("无交集");
           }
           else if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart--BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("BEnd=AEnd,AStart----AEnd");
           }      
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");}
           }
          else if(BStart.getTime()==AStart.getTime())
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart=BStart,AStart---BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AStart=BStart,AEnd=BEnd,AStart---AEnd");
           
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart=BStart,AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");
           }
           
          }
          else if(BStart.after(AStart)&&BStart.before(BEnd))
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("BStart----BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AEnd=BEnd,BStart---AEnd");
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("BStart---AEnd");
           }
           else
           {System.out.print("不可能执行这里!");}
          }
          else if(BStart.getTime()==AEnd.getTime())
          {
           System.out.print("BStart=AEnd,AEnd---BEnd");
          }
          else if(BStart.after(AEnd))
          {
           System.out.print("无交集");
          }
    }
    }
      

  3.   

    import java.io.IOException;
    import java.util.Date;public class a45q { /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

         
          Date AStart=new Date();
          AStart.setTime(77L);//第一段开始时间
          Date AEnd=new Date();
          AEnd.setTime(80L);//第一段结束时间
          Date BStart=new Date();
          BStart.setTime(80L);//第二段开始时间
          Date BEnd=new Date();
          BEnd.setTime(83L);//第二段结束时间
          if(AStart.after(AEnd)||BStart.after(BEnd)||AStart.getTime()==AEnd.getTime()||BStart.getTime()==BEnd.getTime())
          {
           System.out.println("输入的时间段有误");
          }
          else if(BStart.before(AStart))//b段的开始时间位于a段的相对位置,有5种可能
          {
           if(BEnd.before(AStart))//在b段开始时间在a段开始时间之前的情况下,b段的结束时间也有5种可能
           {
           System.out.print("无交集");
           }
           else if(BEnd.getTime()==AStart.getTime())
           {
           System.out.print("AStart=BStart,无交集");
           }
           else if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart--BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("BEnd=AEnd,AStart----AEnd");
           }      
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");}
           }
          else if(BStart.getTime()==AStart.getTime())
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart=BStart,AStart---BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AStart=BStart,AEnd=BEnd,AStart---AEnd");
           
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart=BStart,AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");
           }
           
          }
          else if(BStart.after(AStart)&&BStart.before(AEnd))
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("BStart----BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AEnd=BEnd,BStart---AEnd");
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("BStart---AEnd");
           }
           else
           {System.out.print("不可能执行这里!");}
          }
          else if(BStart.getTime()==AEnd.getTime())
          {
           System.out.print("BStart=AEnd,AEnd---BEnd");
          }
          else if(BStart.after(AEnd))
          {
           System.out.print("无交集");
          }
    }
    }
    //错误总是史料不及的,哈哈,这次我是用语句覆盖测试的
      

  4.   

    import java.io.IOException;
    import java.util.Date;public class a45q { /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

         
          Date AStart=new Date();
          AStart.setTime(77L);//第一段开始时间
          Date AEnd=new Date();
          AEnd.setTime(80L);//第一段结束时间
          Date BStart=new Date();
          BStart.setTime(80L);//第二段开始时间
          Date BEnd=new Date();
          BEnd.setTime(83L);//第二段结束时间
          if(AStart.after(AEnd)||BStart.after(BEnd)||AStart.getTime()==AEnd.getTime()||BStart.getTime()==BEnd.getTime())
          {
           System.out.println("输入的时间段有误");
          }
          else if(BStart.before(AStart))//b段的开始时间位于a段的相对位置,有5种可能
          {
           if(BEnd.before(AStart))//在b段开始时间在a段开始时间之前的情况下,b段的结束时间也有5种可能
           {
           System.out.print("无交集");
           }
           else if(BEnd.getTime()==AStart.getTime())
           {
           System.out.print("AStart=BStart,无交集");
           }
           else if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart--BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("BEnd=AEnd,AStart----AEnd");
           }      
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");}
           }
          else if(BStart.getTime()==AStart.getTime())
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("AStart=BStart,AStart---BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AStart=BStart,AEnd=BEnd,AStart---AEnd");
           
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("AStart=BStart,AStart---AEnd");
           }
           else
           {
           System.out.print("不可能走这里!");
           }
           
          }
          else if(BStart.after(AStart)&&BStart.before(AEnd))//上一个这里错了
          {
           if(BEnd.after(AStart)&&BEnd.before(AEnd))
           {
           System.out.print("BStart----BEnd");
           }
           else if(BEnd.getTime()==AEnd.getTime())
           {
           System.out.print("AEnd=BEnd,BStart---AEnd");
           }
           else if(BEnd.after(AEnd))
           {
           System.out.print("BStart---AEnd");
           }
           else
           {System.out.print("不可能执行这里!");}
          }
          else if(BStart.getTime()==AEnd.getTime())
          {
           System.out.print("BStart=AEnd,AEnd---BEnd");
          }
          else if(BStart.after(AEnd))
          {
           System.out.print("无交集");
          }
    }
    }
    //错误总是会出现的,这次用的是语句覆盖,不会有错了