如何修复java.lang.NumberFormatException:无效的int:“”

时间:2017-08-07 05:32:04

标签: java android numberformatexception

public class VitalCompare implements Comparator<VitalReportsDetails> {
    @Override
    public int compare(VitalReportsDetails vitalReportsDetails, VitalReportsDetails t1) {
        int n1 = Integer.parseInt((vitalReportsDetails.getValue().equals("") ? "0" : vitalReportsDetails.getValue()));

        int n2 = Integer.parseInt((t1.getValue().equals("")? "0" : t1.getValue()));
        if (n1 >= n2) {
            return 1;
        }
        return -1;

    }

}

这样打电话:

int min=Integer.parseInt(Collections.min(listOfData, new VitalCompare()).getValue());

logcat的

  8-07 11:17:49.604 27972-27972/com.cognistrength.caregiver E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.cognistrength.caregiver, PID: 27972
                                                                             java.lang.NumberFormatException: Invalid int: ""
                                                                                 at java.lang.Integer.invalidInt(Integer.java:138)
                                                                                 at java.lang.Integer.parseInt(Integer.java:358)
                                                                                 at java.lang.Integer.parseInt(Integer.java:334)
                                                                                 at com.cognistrength.caregiver.adapters.VitalGraphAdapter.onBindViewHolder(VitalGraphAdapter.java:123)
                                                                                 at com.cognistrength.caregiver.adapters.VitalGraphAdapter

4 个答案:

答案 0 :(得分:3)

你得到“”,因为该值是该列表中的最小值(比较器说明了这一点)。你可以通过简单的电话处理 String temp = Collections.min(listOfData, new VitalCompare()).getValue(); int min = Integer.parseInt(temp.equals("") ? "0" : temp);

答案 1 :(得分:1)

也许你可以使用:

vitalReportsDetails.getValue().equals("") || vitalReportsDetails.isEmpty() ? "0" : vitalReportsDetails.getValue()

答案 2 :(得分:1)

  

java.lang.NumberFormatException:无效的int:&#34;&#34;

<强> NumberFormatException

  

抛出以指示应用程序已尝试转换a   字符串到其中一个数字类型,但字符串没有   适当的格式。

     int n1 = Integer.parseInt((vitalReportsDetails.getValue().equals("") ? "0" : vitalReportsDetails.getValue()));
     int n2 = Integer.parseInt((t1.getValue().equals("")? "0" : t1.getValue()));

来自 n1 & n2 的问题。 调试两者。

语句 [Either n1 or n2] 会抛出 NumberFormatException ,因为它会生成 String ,无法将其解析为 int

答案 3 :(得分:0)

同样的问题发生在我身上,当字符串以 Float Double 的形式发生时,或者像此错误引发的其他形式的其他形式如果它处于表单中,则会发生这种情况双重或浮动尝试如下方法

    float floatstring = FLoat.parseFloat("your_string");
    //then
    int int1= (int) Math.round(floatstring );

Double

double doublestring = Double.parseDouble("100.22");
        //then
        int int2= (int) Math.round(doublestring );