您的位置:首页 > 移动开发 > Objective-C

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

2016-07-26 20:49 585 查看
 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类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: