我从自定义对象
获取字符串格式的价格值如下所示2,000,3,000,5,000,300, - ,600, - ,507, -
我想按升序和降序排序上述价格值
有人可以帮忙吗?
我试过这个:
Comparator<Cars> comparator = new Comparator<Cars>() {
@Override
public int compare(Cars object1, Cars object2) {
// return Float.compare(Integer.parseInt(object1.getPrice()), Integer.parseInt(object2.getPrice()));
String price1=object1.getPrice().replaceAll(",","");
price1=price1.replaceAll("-","");
String price2=object2.getPrice().replaceAll(",","");
price2=price2.replaceAll("-","");
return ((Integer)Integer.parseInt(price1)).compareTo((Integer)Integer.parseInt(price2));
}
};
但如果我执行声明
Collections.sort(carsList,comparator);
获得例外
异常:Error:java.lang.NumberFormatException: Invalid int: ""
答案 0 :(得分:1)
错误:java.lang.NumberFormatException:无效的int:“”
因为数组中的“ - ”元素而发生。当你这样做时:
price1=price1.replaceAll("-","");
new price1字符串包含空字符串“”
使用Integer.parseInt
导致以下NumberFormatExcpetion
语句失败。
由于parsetInt
无法将空字符串转换为数字。
因此,一种解决方案是从数组中删除这些元素。
或者其他解决方案是为空字符串定义默认值整数。类似的东西:
price1=price1.replaceAll("-","");
if("".equals(price1))
price1="0";