1

我有字符串格式的价格值(“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"

有人可以帮忙吗?

4

5 回答 5

3

Integer.parseInt()不适用于包含逗号 ( ,) 的货币。在尝试使用该parseInt()方法之前,您可能必须执行字符串操作以删除逗号。

做这样的事情:

String obj1Price = object1.getPrice().replaceAll(",","");
String obj2Price = object2.getPrice().replaceAll(",","");

return ((Integer)Integer.parseInt(obj1Price )).compareTo((Integer)Integer.parseInt( obj2Price))); 
于 2013-08-14T06:31:08.607 回答
2

在将货币数据(字符串表示)传递给您的方法之前修改它,例如,您可以使用它:

"2,000".replaceAll(",","");
于 2013-08-14T06:32:09.583 回答
1
Integer.parseInt("3,000")

正在抛出异常。您需要摆脱,价格的字符串表示形式。

这里

于 2013-08-14T06:32:03.150 回答
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"));
于 2013-08-14T06:49:23.063 回答
0
return ((Integer)Integer.parseInt(obj1Price.replaceAll(",","") )).compareTo((Integer)Integer.parseInt( obj2Price.replaceAll(",",""))));

将工作

于 2013-08-14T06:43:04.947 回答