Vector抛出异常与Object转换为Double后进行大小比较

 public boolean onBoSaveBeforeCheck() {
   
    boolean flag = false;
    Object pk_invbasdoc = null;
    Object douNumber;
   
    try {
   
    BillModel billModel = getBillCardPanelWrapper().getBillCardPanel().getBillModel("jzpm_mt_settle_b1");
    Vector rowData = billModel.getDataVector();//这里拿到一个vector,vector的每个分量中都是装载着是类似于数组的对象
    List pk_contract =   (List) rowData.get(0);//这里要是转型为Object[]或是ArrayList[]都抛出了异常

    IUAPQueryBS dao = NCLocator.getInstance().lookup(IUAPQueryBS.class);
    List result = (List) dao.executeQuery(new StringBuffer("'").append(pk_contract.get(2)).append("'").toString(), new MapListProcessor());
    for(int j = 0;j<rowData.size();j++){
    List data  = (List) rowData.get(j);
    List previousData = null;
    for(int i = 0;i<data.size();i++){ 
    if(j != 0){
    previousData = (List) rowData.get(j-1);
    }else if(j==0){
    previousData = (List) rowData.get(0);
    }
   
    if("小计".equals(data.get(0)) && previousData.get(7) == data.get(3)){
    pk_invbasdoc = previousData.get(12);
    douNumber =  previousData.get(29);//从vector中拿到
    double sum =Double.parseDouble(douNumber.toString());
    BigDecimal data1 = new BigDecimal(sum);
   
    if(result!=null && result.size()>0){
    for(int h=0;h<result.size();h++){
   
    Map map =  (Map) result.get(h);
    if(map.get("pk_invbasdoc").equals(pk_invbasdoc)){
    Object frist =  map.get("vrserve3"); //这里拿到Object类型的变量一个
    double money =Double.parseDouble(frist.toString()); //转换成double类型
    BigDecimal data2 = new BigDecimal(money);
    flag = data1.compareTo(data2) < 1;
    }
    }
    }
    }
    }
    }
    } catch (Exception e) {
    // TODO: handle exception
    }
return flag;

}

BigDecimal  a;

int  c = a.compareTo(BigDecimal b)

compareTo()说明:当 a > b 时 返回  1

   当  a< b 时   返回  -1

   当 a=b   时返回  0

将比较两个double类型的变量的大小时使用 BigDecimal


Vector相当于是一个线程安全的List,并且是长度可变,取值时使用get(Index)方法,该方法本身会抛出异常IndexOutOfBoundsException

如果在Vector分量中存储的也是类似于数组的东西,并且不知道数据类型的情况可用强转为 List 使用。

在强转vector中取到的值时,我遇到过抛出异常的。抛出异常的时候是强转为Object[]类型



Object  a;

double b = Double.parseDouble(a.toString());

Object转换为double类型

猜你喜欢

转载自blog.csdn.net/wgs_93/article/details/52039498