【问题标题】:how to fix java.lang.NumberFormatException: Invalid int: "" [duplicate]如何修复 java.lang.NumberFormatException:Invalid int:“” [重复]
【发布时间】:2018-01-14 08:23:19
【问题描述】:
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

【问题讨论】:

  • 只是把这个扔出去......为什么vitalReportsDetails.getValue()String而不是Integer
  • 比较器用于对数据进行排序,它不会改变它们..
  • 另外,当两个值相同时,您的Comparator 需要返回0。你的没有。
  • 如何修复..这个。
  • 正如@IntelliJ Amiya 所说,它没有可以转换为int 的值。例如,如果值为“Ali”,你怎么能期望将其更改为整数!?

标签: java android numberformatexception


【解决方案1】:

也许你可以使用:

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

【讨论】:

    【解决方案2】:

    java.lang.NumberFormatException: Invalid int: ""

    NumberFormatException

    抛出以表明应用程序已尝试将 字符串到数字类型之一,但该字符串没有 适当的格式。

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

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

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

    【讨论】:

    • 我正在将字符串转换为整数
    • @Adevelopment 测试用例 DEBUG 请
    • @Adevelopment 你得到SPACE
    • 我已经应用了 isEmpty 和 trim 然后同样的异常也即将到来
    【解决方案3】:

    同样的问题发生在我身上,当字符串采用 FloatDouble 或其他形式而不是数字时会发生这种情况double 或 float 试试下面的方法

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

    对于双人

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

    【讨论】:

    • 我得到了我们必须在 int 中转换的字符串
    • 是的,首先将您的字符串转换为 float 或 double 然后将其转换为 int 。见上面的代码。
    • 我已经编辑了答案,现在重新检查
    • 仍然是同样的问题,我已根据您的逻辑进行了更改
    • @Omar Danisha 你能检查我的代码吗?
    【解决方案4】:

    您得到“”,因为该值是该列表中的最小值(您的比较器说过)。你可以通过简单地调用来处理它 String temp = Collections.min(listOfData, new VitalCompare()).getValue(); int min = Integer.parseInt(temp.equals("") ? "0" : temp);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多