java.lang.NumberFormatException: For input string: "0 "

本文介绍了一个在Java中进行对象排序时出现的NumberFormatException异常情况。该异常发生在尝试将字符串1.0转换为整数时。文章深入分析了错误产生的原因,并提供了出现问题的代码片段,涉及OrderNoComparator类及其实现的compare方法。
java.lang.NumberFormatException: For input string: "1.0"
 at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
 at java.lang.Integer.parseInt(Integer.java:477)
 at java.lang.Integer.(Integer.java:609)
 at com.gpcsoft.eprocurement.mydesktop.seller.business.SellerDeskTopBusiness$OrderNoComparator.compare(SellerDeskTopBusiness.java:219)
 at java.util.Arrays.mergeSort(Arrays.java:1278)
 at java.util.Arrays.sort(Arrays.java:1219)
 at java.util.Collections.sort(Collections.java:155)






	public class OrderNoComparator implements Comparator {
		public int compare(Object element1, Object element2) {
			try {
				Object tmpStr2=BeanUtilsEx.getProperty(element1, "orderNo");
				Object tmpStr1=BeanUtilsEx.getProperty(element1, "orderNo");

      //取出来的是 Double类型.结果toString();变成 x.0.就报错了
				return (new Integer(tmpStr2.toString())).compareTo(new Integer(tmpStr1.toString()));
				
			} catch (IllegalAccessException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NoSuchMethodException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return 0;
		}
	} 


### 关于 `java.lang.NumberFormatException` 异常 #### 异常原因 `java.lang.NumberFormatException: null` 表明程序试图将一个 `null` 或者不符合数字格式的字符串转换为数值类型时发生错误。当调用诸如 `Integer.parseInt()` 这样的方法来解析字符串到整数或其他基本数据类型的包装类对象时,如果传入的是 `null` 或者不合法的字符序列,则会抛出此异常[^3]。 具体来说,在执行像下面这样的代码片段时可能会遇到这个问题: ```java String strNumber = null; int number = Integer.parseInt(strNumber); ``` 这段代码中的变量 `strNumber` 被设置为了 `null`,因此在尝试将其转换成整型的过程中触发了 `NumberFormatException` 的抛出[^4]。 #### 解决方案 为了避免此类异常的发生,可以采取以下措施之一: - **验证输入的有效性**:确保传递给解析函数的参数不是 `null` 并且遵循预期的数据模式。可以在实际调用之前先做简单的检查。 ```java public static int safeParseInt(String s) { if (s == null || !s.matches("-?\\d+")) throw new IllegalArgumentException("Invalid input"); return Integer.parseInt(s.trim()); } ``` - **捕获并处理异常**:通过使用 `try-catch` 结构围绕可能引发异常的操作,并提供适当的恢复逻辑或向用户反馈信息。 ```java try { String strNumber = "not a number"; int number = Integer.parseInt(strNumber); } catch (NumberFormatException e) { System.out.println("Error parsing integer from string."); // Handle the error appropriately here. } ``` - **利用正则表达式预校验**:对于更复杂的场景下,还可以考虑采用正则表达式的手段提前过滤掉那些明显不可能成功的转换请求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值