【问题标题】:Parsing an integer value in Android在 Android 中解析整数值
【发布时间】:2012-12-11 11:43:30
【问题描述】:

我正在尝试获取用户在EditText 中输入的整数值。

EditText eTextValue=(EditText) findViewById(R.id.eId); 
String eTextString=eTextValue.getText().toString();
int eTextValue1=Integer.parseInt(eTextString);

但不幸的是,我得到了,

无法将 9827328 解析为整数。

我曾尝试使用 Integer.valueOf 而不是 Integer.parseInt,但我又遇到了同样的异常。

我什至使用Long 数据类型而不是int 类型数据类型来存储值,但似乎没有任何效果。对此的任何帮助将不胜感激。 我已经浏览了所有这些链接unable to parse ' ' as integer in androidParsing value from EditText...但似乎没有任何效果,所有这些都让我陷入了异常。

【问题讨论】:

  • 你能发布你的异常堆栈跟踪吗?
  • 您输入的数字可能有前导和/或尾随空格。尝试使用trim() 方法。
  • 在 xml 中尝试使用 android:inputType="number"。另见.. stackoverflow.com/questions/4903515/… stackoverflow.com/questions/2709253/…
  • 感谢 Ridoy,您的解决方案对我来说很好。我对 Android 的智能印象深刻,因为它不允许用户在 EditText 中输入除 Integer 之外的任何其他值以避免异常。

标签: android android-edittext


【解决方案1】:

您使用eTextValue 作为两个不同事物(一个int 和一个EditText)的变量名。你不能这样做并期望它能够正常工作。改变一个或另一个,它应该会更好。

【讨论】:

    【解决方案2】:

    尝试在相应 EditText 元素下的 XML 文件中输入以下内容。

    android:inputType="number"

    希望这能让你通过异常。

    【讨论】:

      【解决方案3】:

      您需要检查您正在解析的字符串是否为整数。试试这个代码:

      if (IsInteger(eTextString)
         int eTextValue1=Integer.parseInt(eTextString);
      

      并添加此功能:

      public static boolean IsInteger(String s)
      {
         if (s == null || s.length() == 0) return false;
         for(int i = 0; i < s.length(); i++)
         {
            if (Character.digit(s.charAt(i), 10) < 0)
               return false;
         }
         return true;
      }
      

      希望对你有帮助

      【讨论】:

        【解决方案4】:
        int id;
        id=Integer.parseInt(ed.getText().toString());
        

        【讨论】:

        猜你喜欢
        • 2014-01-20
        • 1970-01-01
        • 1970-01-01
        • 2013-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多