java.lang.NumberFormatException: For input string

本文详细阐述了在处理Java对象数组时,如何正确进行类型转换以避免遇到 NumberFormatException 异常,通过实例展示了字符串分割与字符转换的方法,并提供了解决方案及优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

严重: java.lang.NumberFormatException: For input string: "companyCode"

 

在 object数组的时候,要注意好类型的转换.

 

------java.lang.NumberFormatException: For input string 解决方法--------------------------------------------------------
字符分割异常 转化字符或输入字符问题 

 

public List<?> findAgencyArSumDetail(
		SettlementAgencyARDetailResult headInfoArResult) {
		String sql = "SELECT CNTR_SIZE||CNTR_TYPE AS containerSizes,"
				+ " COMPANY_CDE AS companyCode,"
				+ " FULL_EMPTY_IND AS fullEmptyIndicator,"
				+ " EXP_IMP_IND AS expImportIndicator,"
				+ " SOC_IND AS socIndicator,"
				+ " COUNT(*) AS containeraCount,"
				+ " SUM(FEE_AMT) AS toTalNum,"
				+ " FEE_PRICE AS feePrice"
				+ " FROM CBS_SET_DOC_AG_CNTR "
				+ " WHERE SVVD_ID=:svvdId"
				+ " AND PORT_CDE=:portCode"
				+ " AND COMPANY_CDE=:companyCode"
				+ " AND SO_COMPANY_CDE=:SOCompanyCode"
				+ " AND FEE_TYPE=:feeType"
				+ " AND ACT_FLAG=:actualFlag"
				+ " GROUP BY(CNTR_SIZE||CNTR_TYPE,FULL_EMPTY_IND,SOC_IND,EXP_IMP_IND,FEE_PRICE,COMPANY_CDE)";
		SQLQuery querys = (SQLQuery) cbsModuleRepository.getSessionFactory()
		.getCurrentSession().createSQLQuery(sql.toString());
	 
		querys.setParameter(SettlementContant.SVVD_ID,
				headInfoArResult.getSvvdId());
		querys.setParameter(SettlementContant.PORT_CODE,
				headInfoArResult.getPortCode());
		querys.setParameter(SettlementContant.COMPANY_CODE,
				headInfoArResult.getCompanyCode());
		querys.setParameter(SettlementContant.SO_COMPANY_CODE,
				headInfoArResult.getShipownerCompanyCode());
		querys.setParameter(SettlementContant.FEE_TYPE,
				headInfoArResult.getChargeCode());
		querys.setParameter(SettlementContant.ACTUAL_FLAG,
				SettlementContant.ACTUAL_FLAG_Y);
		List<Object[]> list = querys.list();
		SettlementAgencySumDetailResult agencySumDetailResult = null;
		List<SettlementAgencySumDetailResult> queryList = new ArrayList<SettlementAgencySumDetailResult>();
		for (Object[] object : list) {
			agencySumDetailResult = new SettlementAgencySumDetailResult();
			agencySumDetailResult.setContainerSizes((String) object[0]);
			agencySumDetailResult.setCompanyCode((String) object[1]);
			agencySumDetailResult.setFullEmptyIndicator((String) object[2]);
			agencySumDetailResult.setExpImportIndicator((String) object[3]);
			agencySumDetailResult.setSocIndicator((String) object[4]);
			agencySumDetailResult.setContaineraCount((BigDecimal) object[5]);
			agencySumDetailResult.setToTalNum((BigDecimal) object[6]);
			agencySumDetailResult.setFeePrice((BigDecimal) object[7]);
			queryList.add(agencySumDetailResult);
		}
		return queryList;
	}

 注意循环遍历放到 List中..

 

这里还有关于HQL中在字符串的拼接问题.

 

      第一种:
+ " commBl.billBasicUuid= " + docHead.getBusinessReferenceUuid()
+ " AND commBl.companyCode = '" +docHead.getCompanyCode()+"'"
+ " AND commBl.commissionMode '" +arItem.getChargeCodeGroup()+"'"
+ " AND commBl.commissionType '" +arItem.getChargeCode()+"'"

 

hql.append(" WHERE commBl.billBasicUuid=:businessReferenceUuid");
		hql.append(" AND commBl.companyCode =:companyCode");
		hql.append(" AND commBl.commissionMode=:chargeCodeGroup");
		hql.append(" AND commBl.commissionType=:chargeCode");
	第二种:
Query query = cbsModuleRepository.getSessionFactory()
				.getCurrentSession().createQuery(hql.toString());
		query.setParameter(SettlementContant.BUSINESS_REFERENCE_UUID,
				settlementHead.getBusinessReferenceUuid());
		query.setParameter(SettlementContant.COMPANY_CODE,
				settlementHead.getCompanyCode());
		query.setParameter(SettlementContant.CHARGE_CODE_GROUP,
				settlementAR.getChargeCodeGroup());
		query.setParameter(SettlementContant.CHARGE_CODE,
				settlementAR.getChargeCode());

 

 

跟上边的可以比较一下,这里例举2中拼接的例子.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值