r();
     while(key1.hasNext()){
      while(key2.hasNext()){
       if(zhida.isEmpty()){
        String sop1=(String)key1.next();
        String sop2=(String)key2.next();
        zhida=zhida(sop1,sop2);
       }
       //内层break
       if(!zhida.isEmpty()){  
        System.out.println("找到中途换乘"+zhida.size()); 
        break;
       }
      }
      //外层break
      if(!zhida.isEmpty()){
       System.out.println("break2"+zhida.size()); 
       break;
      }
     }
 找到一条可行的线路后,再开始查找起点到转乘点1的线路和转乘点2到重点的线路,并放到一个String中:
 //第1站到第2站的车号
      while(one2two.iterator().hasNext()){
       System.out.println("step3");
       nonstop2=(Nonstop)one2two.iterator().next();
                   busno1+=nonstop2.getBusno()+",";
       }
         //第3站到第4站的车号
     while(three2four.iterator().hasNext()){
       System.out.println("step4");
       nonstop3=(Nonstop)three2four.iterator().next();
       busno2+=nonstop3.getBusno()+",";
      }
 最后把起点到第一换乘站,第一换乘站到第二换乘站,第二换乘站到终点站3段线路连接到一个String中并将改String添加到集合中,最后返回该集合:
      result="从"+stop1+"站出发,乘坐"+busno1+"到"+huanchengstop1+"站转"+nonstop.getBusno()+"到"+
            huanchengstop2+"站转"+busno2+"到"+stop2;
      twohg.add(result);
      System.out.println("find one");
     }catch(Exception e){
      e.printStackTrace();
     }
   return twohg;
 本算法采用了3个bean来保存3段路线的信息,每个bean中分别有start,end,busno3个属性,使得算法条理更加清晰化。
 至此站站查询全部完成。
 
 服务器对外接口(Servlet)的实现
 本系统采用Servlet作为和手机通讯的接口,采用HTTP的应答机制,免去了自己写应答的麻烦,系统在执行了一次查询后在服务器的LOG中记录一次,同时数据库中负责记录查询次数的计数器加1。发送信息关键代码如下:
    response.setContentType(CONTENT_TYPE);
    DataOutputStream dos = new DataOutputStream(response.getOutputStream());
    Iterator itr=coll.iterator() ;
    while (itr.hasNext())
    {
      result = result+(String) itr.next() ;
免费基于J2ME的公交查询系统的设计与实现(六)相关范文

