//************************************************
                     //write the correct data to the output file
                     //************************************************
                      Iterator itNwPrdtList = vecNwPrdtList.iterator();
                    NwPrdtDO[] nwPrdtDOArray = new NwPrdtDO[vecNwPrdtList.size()];
                    int index = 0;
                    count = 0;
                    while (itNwPrdtList.hasNext() && !dunSend) {
                        NwPrdtDO tmpNwPrdtDOForArray = (NwPrdtDO) itNwPrdtList.next();
                        nwPrdtDOArray[index] = new NwPrdtDO();
                        nwPrdtDOArray[index].setEndDt(tmpNwPrdtDOForArray.getEndDt());
                        nwPrdtDOArray[index].setOrdEndDt(tmpNwPrdtDOForArray.getOrdEndDt());
                        nwPrdtDOArray[index].setOrdStartDt(tmpNwPrdtDOForArray.getOrdStartDt());
                        nwPrdtDOArray[index].setPrdtActn(tmpNwPrdtDOForArray.getPrdtActn());
                        nwPrdtDOArray[index].setPrdtCd(tmpNwPrdtDOForArray.getPrdtCd());
                        nwPrdtDOArray[index].setPrdtDesc(tmpNwPrdtDOForArray.getPrdtDesc());
                        nwPrdtDOArray[index].setWrkOrdNo(tmpNwPrdtDOForArray.getWrkOrdNo());
                        nwPrdtDOArray[index].setStartDt(tmpNwPrdtDOForArray.getStartDt());
                        nwPrdtDOArray[index].setSvcInstId(tmpNwPrdtDOForArray.getSvcInstId());                        nwPrdtDOArray[index].setOrdTy(ordTy);
                        nwPrdtDOArray[index].setChargeTy(chargeTy[count++]);
                        nwPrdtDOArray[index].setChargePrdt(chargePrdt);
                        nwPrdtDOArray[index].setNwPrdtOrdQty(String.valueOf(nwPrdtOrdQty));
                        nwPrdtDOArray[index].setNwPrdtTotalQty(String.valueOf(nwPrdtTotalQty));
                        if (workOrdCompDt == null || workOrdCompDt.equals("null")) {
                            nwPrdtDOArray[index].setWrkOrdCompDt("");
                        }
                        else {
                            nwPrdtDOArray[index].setWrkOrdCompDt(workOrdCompDt);                        }
                        nwPrdtDOArray[index].setSvcNo(extId);
                        nwPrdtDOArray[index].setSvcInstId(svcInstId);
                        nwPrdtDOArray[index].setWorkOrdCreateDt(workOrdCreateDt);
                        nwPrdtDOArray[index].setRentalTariffGrp(rentalTariffGrp);                        index++;
                    }
                    Iterator itNwPrdtListC = vecNwPrdtListC.iterator();
                    NwPrdtDO[] nwPrdtDOArrayC = new NwPrdtDO[vecNwPrdtListC.size()];                    index = 0;
                    count = 0;
                    while (itNwPrdtListC.hasNext() && !dunSendC) {
                        NwPrdtDO tmpNwPrdtDOForArray = (NwPrdtDO) itNwPrdtListC.next();
                        nwPrdtDOArrayC[index] = new NwPrdtDO();
                        nwPrdtDOArrayC[index].setEndDt(tmpNwPrdtDOForArray.getEndDt());
                        nwPrdtDOArrayC[index].setOrdEndDt(tmpNwPrdtDOForArray.getOrdEndDt());
                        nwPrdtDOArrayC[index].setOrdStartDt(tmpNwPrdtDOForArray.getOrdStartDt());
                        nwPrdtDOArrayC[index].setPrdtActn(tmpNwPrdtDOForArray.getPrdtActn());
                        nwPrdtDOArrayC[index].setPrdtCd(tmpNwPrdtDOForArray.getPrdtCd());
                        nwPrdtDOArrayC[index].setPrdtDesc(tmpNwPrdtDOForArray.getPrdtDesc());
                        nwPrdtDOArrayC[index].setWrkOrdNo(tmpNwPrdtDOForArray.getWrkOrdNo());
                        nwPrdtDOArrayC[index].setStartDt(tmpNwPrdtDOForArray.getStartDt());
                        nwPrdtDOArrayC[index].setSvcInstId(tmpNwPrdtDOForArray.getSvcInstId());                        nwPrdtDOArrayC[index].setOrdTy("E");
                        nwPrdtDOArrayC[index].setChargeTy(chargeTyC[count++]);
                        nwPrdtDOArrayC[index].setChargePrdt(chargePrdtC);
                        nwPrdtDOArrayC[index].setNwPrdtOrdQty(String.valueOf(nwPrdtOrdQtyC));
                        nwPrdtDOArrayC[index].setNwPrdtTotalQty(String.valueOf(nwPrdtTotalQtyC));
                        if (workOrdCompDt == null) {
                            nwPrdtDOArrayC[index].setWrkOrdCompDt("");
                        }
                        else {
                            nwPrdtDOArrayC[index].setWrkOrdCompDt(workOrdCompDtC);
                        }
                        nwPrdtDOArrayC[index].setSvcNo(extIdC);
                        nwPrdtDOArrayC[index].setSvcInstId(svcInstIdC);
                        nwPrdtDOArrayC[index].setWorkOrdCreateDt(workOrdCreateDtC);
                        nwPrdtDOArrayC[index].setRentalTariffGrp(rentalTariffGrpC);
                        index++;
                    }
                    if (!doNotProcess) {
                        if (dunSendC) {
                            //write the provide work order to output file
                            for (int ii = 0; ii < nwPrdtDOArray.length; ii++) {
                                nwPrdtDOArray[ii].setSeqNo(String.valueOf(apc.getLongVar(outLineCnt)));
                                //writeOutputDetail(nwPrdtDOArray[ii]);
                                //[12 Oct 2005,Li Yu Zhan,-start]
                                //String temp=nwPrdtDOArray[ii].getWrkOrdNo();
                                psGetWorkOrdNo.setString(1,nwPrdtDOArray[ii].getWrkOrdNo());
                                rsGetWorkOrdNo =psGetWorkOrdNo.executeQuery();
                                int workOrdNocnt = 0;
                                if(rsGetWorkOrdNo.next())
                                {
                                    workOrdNocnt = rsGetWorkOrdNo.getInt("cnt");
                                }                                if( workOrdNocnt < 1)                                {
                                   writeOutputDetail(nwPrdtDOArray[ii]);
                                   ResultSet rsGetGenID = psGetGenIDSecondSQL.executeQuery();
                                   if(rsGetGenID.next())
                                   {
                                       if(rsGetGenID.getString("gen_id") != null)
                                       {
                                          psInsertWorkOrdNo.setLong(1,rsGetGenID.getLong("gen_id"));
                                          psInsertWorkOrdNo.setString(2,nwPrdtDOArray[ii].getWrkOrdNo());
                                          psInsertWorkOrdNo.setString(3, nwPrdtDOArray[ii].getSvcNo());
                                          psInsertWorkOrdNo.setString(4, nwPrdtDOArray[ii].getWrkOrdCompDt());
                                          psInsertWorkOrdNo.executeUpdate();
                                       }
                                   }
                                   workOrdNocnt = 0;
                                }请兄弟帮忙看看,java.lang.ArrayIndexOutOfBoundsException这个异常总是出现,我的数组用的哪里不对了????

解决方案 »

  1.   

    NwPrdtDO[] nwPrdtDOArrayC = new NwPrdtDO[vecNwPrdtListC.size()+1];
      

  2.   

    跟踪几个for 循环看看?
    我觉得是不是
     nwPrdtDOArray.length
    改成.size()?
    好象我用.length 的时候和我想的都不一样。呵呵!
      

  3.   

    楼上的,Array没有.size()啊????
      

  4.   

    最好能看到trace信息,或者自己跟
      

  5.   

    我也想这样,可我修改,没有数据库,无法DEBUG,人家只提供了LOG 和源程序,真晕,不知道咋弄。
      

  6.   

    出现此异常时会同时报出index,有助于分析。