我正在开发一个应用程序,其中用户可以选择在纬度和经度的两个 EditText 视图中输入一组坐标。然后输入的坐标/位置将显示在地图上,效果很好。但是,如果用户输入了无效值,应用程序就会崩溃,我需要防止这种情况发生。
例如,纬度/经度值必须为 35.27,而导致应用程序崩溃的原因是当有多个点“。”时。例如 33.23.43。如何检查输入的值是否只有一个点?
我在这方面并没有太多经验,而且我对 android 还是很陌生,所以任何帮助都将不胜感激。
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
}
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;
}
只需使用 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"
对于有符号浮点数。
谢谢。