0

我正在创建一个用于计算游戏积分的应用程序。这个应用程序有一个 edittext 组件。我想检查从编辑文本中检索到的字符串是否包含 0-9 以外的字符。这是因为我的应用程序包含一个 integer.parse 函数,如果输入 0-9 以外的字符,该函数会崩溃。所有帮助将不胜感激。提前致谢。

4

3 回答 3

3

如果您只想通知用户无效字符,则可以将其包装在 a 中try/catch并采取相应措施

try
{
    int someInt = Integer.parseInt(et.getText().toString());
    // other code
}
catch (NumberFormatException e)
{
    // notify user with Toast, alert, etc...
}

您还可以根据需要使用正则表达式来查找您想要/不想要的字符。

为了清楚以防我的代码注释不是,我建议您对异常执行一些操作并通知用户。不要抓住它,让它坐着

于 2013-11-14T21:12:55.630 回答
2
public static boolean isNumeric(String str)
{
    for (char c : str.toCharArray())
    {
        if (!Character.isDigit(c)) return false;
    }
    return true;
}

或者

public boolean isNumeric(String s) {  
    return s.matches("[-+]?\\d*\\.?\\d+");  
} 
于 2013-11-14T21:16:43.660 回答
0

首先,您可以仅将edittext设置为整数,因此在您的布局中放置

android:inputType="number"

它将仅在编辑文本中设置为整数。

这里所有可能的类型:http: //developer.android.com/reference/android/widget/TextView.html#attr_android :inputType

然后您可以使用正则表达式进行测试或/并在解析时捕获异常。正则表达式将是:

"string".matches("\\d+") // true when numbers only, false otherwise

参考这里:

http://developer.android.com/reference/java/lang/String.html#matches(java.lang.String) http://developer.android.com/reference/java/util/regex/Pattern.html

于 2013-11-14T21:19:41.373 回答