2

我正在开发一个应用程序,其中用户可以选择在纬度和经度的两个 EditText 视图中输入一组坐标。然后输入的坐标/位置将显示在地图上,效果很好。但是,如果用户输入了无效值,应用程序就会崩溃,我需要防止这种情况发生。

例如,纬度/经度值必须为 35.27,而导致应用程序崩溃的原因是当有多个点“。”时。例如 33.23.43。如何检查输入的值是否只有一个点?

我在这方面并没有太多经验,而且我对 android 还是很陌生,所以任何帮助都将不胜感激。

4

4 回答 4

1

I was going to suggest that you checked the length of the string that you get, but because 1.5 and 153.163 are both valid that doesn't work. I advise you to use a `try/catch statement. For example

try{
    //do what ever you do with the numbers here
catch(Exception e){
//the user has inputted an invalid number deal with it here
}
于 2013-01-22T20:15:20.617 回答
1

查看

Android EditText:setFilters 示例:数字文本字段模式和长度限制。

这可能是你想要的。

于 2013-01-22T20:18:33.213 回答
0
bool badInput = countChar(s, '.')  > 1;

countChar 在哪里

int countChar(string s, char c)
{
    int counter = 0;
    for( int i=0; i<s.length(); i++ ) {
        if( s.charAt(i) == c ) {
            counter++;
        } 
    }
    return counter;
}
于 2013-01-22T19:59:02.917 回答
0

只需使用 aregexp来检查输入的有效性。

Pattern p = Pattern.compile("^(-)?\d*(\.\d*)?$");
Matcher m = p.matcher(inputString);
if (m.find()) { 
    ////Found
}
else {
  //Not found
}

现在focus listener在现场实施一个来运行这个有效性测试。

或:您也可以从 xml 执行此操作。

在 XML 中添加属性editText

android:inputType="number|numberSigned|numberDecimal" 

对于有符号浮点数

谢谢。

于 2013-01-22T20:19:39.380 回答