【问题标题】:Android: Integer.parseInt() never throws exceptionAndroid:Integer.parseInt() 从不抛出异常
【发布时间】:2014-10-28 17:33:40
【问题描述】:

我的活动中有一些 EditText。用户必须填写它们并确认他的输入。一些 EditText 仅用于数字。为了确保只有有效值,我尝试使用 Integer.parseInt(...) 将输入转换为 Integer。问题是无论字符串是什么 NumberFormatException 都不会被抛出。我调试了问题,每次都执行对应的行,但没有抛出异常。

这是我的方法的代码:

private boolean formNotEmpty()
{
    boolean returnValue = true;
    for(int i = 0; i < _editText.size();i++){
        if(_editText.get(i).getText().toString().trim().length() == 0)
        {
            returnValue = false;
            _toastMessage = "Es müssen alle Felder ausgefüllt werden.";
            break;
        }else if(_editText.get(i).getHint().equals(getResources().getString(R.string.rentactivity_hint_userPLZ))
               ||_editText.get(i).getHint().equals(getResources().getString(R.string.rentactivity_hint_userTelefon)))
        {
            try{
                Integer.parseInt(_editText.get(i).getText().toString().trim());
            }catch(NumberFormatException e)
            {
                _toastMessage += "In "+_editText.get(i).getHint().toString() +" dürfen nur Zahlen stehen. \n";
            }
        }
    }
    return returnValue;
}

我忘记将 catch 块中的 returnValue 设置为 false。如果方法返回 true,_toastMessage 将获得一个新字符串。这就是我假设永远不会抛出异常的原因。给我带来的麻烦真的很抱歉。

非常感谢

【问题讨论】:

  • 误导性标题。 int 是原始类型,因此不存在 int.parseInt() 这样的东西。我也很想知道例如字符串“asdasda”的parseInt() 结果是什么。因为你没有得到任何异常。
  • 你确定它被调用了吗?您应该扩展您的问题,显示输出!
  • 可能提示没有正确填充,所以没有命中。
  • 为什么不让 int 字段只接受数字?

标签: java android string exception parseint


【解决方案1】:

如果您指望代码向您抛出异常,并且您想使用它作为验证数据以仅接受数字的方法,那么这不是正确的方法。异常处理不应像您建议的那样明确用作 if-else。一个更简单,也许更正确的方法来完成你想要的事情是:

在布局xml中声明

android:inputType="number"

对于您希望仅将条目限制为数字的特定编辑文本。

当您执行此操作时,当您尝试以用户身份填写该 editText 时,您只能选择输入数字。在 xml 中添加后,您无需依赖 Integer.parseInt() API 来引发异常,以进行验证。

【讨论】:

    【解决方案2】:

    你也可以使用EditText的attr:

    android:digits="0123456789." 
    

    http://developer.android.com/reference/android/widget/TextView.html#attr_android:digits

    之后用户只能写数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 2013-05-24
      • 2011-07-17
      • 2017-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多