我的价格是String格式的值(“2,000”,“3,000”等)
我想对价格值进行排序
因为我使用了以下代码:
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()));
return ((Integer)Integer.parseInt(object1.getPrice())).compareTo((Integer)Integer.parseInt( object2.getPrice()));
}
如果我执行以下声明
Collections.sort(carsList, comparator);
我正在
Error: java.lang.NumberFormatException: Invalid int: "3,000"
有人可以帮忙吗?
答案 0 :(得分:3)
Integer.parseInt()
不适用于包含逗号的货币(,
)。在尝试使用parseInt()
方法之前,您可能必须执行字符串操作以删除逗号。
做这样的事情:
String obj1Price = object1.getPrice().replaceAll(",","");
String obj2Price = object2.getPrice().replaceAll(",","");
return ((Integer)Integer.parseInt(obj1Price )).compareTo((Integer)Integer.parseInt( obj2Price)));
答案 1 :(得分:2)
在将货币数据(字符串表示)传递给您的方法之前修改它,例如,你可以用这个:
"2,000".replaceAll(",","");
答案 2 :(得分:1)
答案 3 :(得分:1)
试试这个
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String object1, String object2) {
int i = 0;
int j = 0;
try {
i = NumberFormat.getNumberInstance(java.util.Locale.US).parse(object1).intValue();
j = NumberFormat.getNumberInstance(java.util.Locale.US).parse(object2).intValue();
} catch (ParseException e) {
}
// return Float.compare(Integer.parseInt(object1.getPrice()), Integer.parseInt(object2.getPrice()));
System.out.println("i = " + ((Integer)i) + " , j = " + ((Integer)j));
return ((Integer)i).compareTo(((Integer)j));
}
};
System.out.println("xxxxxxxxx = " + comparator.compare("4,000", "3,000"));
答案 4 :(得分:0)
return ((Integer)Integer.parseInt(obj1Price.replaceAll(",","") )).compareTo((Integer)Integer.parseInt( obj2Price.replaceAll(",",""))));
会工作