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;
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类型