android:如果用户输入两个小数点,比如“0”,应用程序就会崩溃;1..5“;而不是",;1.5“;
我有一个android程序,我成功地限制了用户只输入小数点后的值。。问题是,如果用户输入两个小数点,如“1..”,则应用程序崩溃。我只允许使用一个特殊字符,即小数点本身。那么,我如何限制用户输入两个小数点,或者显示一些验证呢 我需要这样的东西android:如果用户输入两个小数点,比如“0”,应用程序就会崩溃;1..5“;而不是",;1.5“;,android,decimal,Android,Decimal,我有一个android程序,我成功地限制了用户只输入小数点后的值。。问题是,如果用户输入两个小数点,如“1..”,则应用程序崩溃。我只允许使用一个特殊字符,即小数点本身。那么,我如何限制用户输入两个小数点,或者显示一些验证呢 我需要这样的东西 else if(txtLdays.getText().toString().trim().equals("..")) { txtLdays.requestFocus();
else if(txtLdays.getText().toString().trim().equals(".."))
{
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
试试这个
使用包含如下
else if(txtLdays.getText().toString().trim().contains(".."))
{
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
编辑
字符串到双倍
double result = Double.parseDouble(txtLdays.getText().toString().trim());
double result = (double) 12;
int到double
double result = Double.parseDouble(txtLdays.getText().toString().trim());
double result = (double) 12;
如果用户输入12。
然后用
double result;
if(txtLdays.getText().toString().trim().endsWith("."))
result = Double.parseDouble(txtLdays.getText().toString().trim().replace("\\.", ""))
试试这个
使用包含如下
else if(txtLdays.getText().toString().trim().contains(".."))
{
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
编辑
字符串到双倍
double result = Double.parseDouble(txtLdays.getText().toString().trim());
double result = (double) 12;
int到double
double result = Double.parseDouble(txtLdays.getText().toString().trim());
double result = (double) 12;
如果用户输入12。
然后用
double result;
if(txtLdays.getText().toString().trim().endsWith("."))
result = Double.parseDouble(txtLdays.getText().toString().trim().replace("\\.", ""))
有两种可能
如果要限制按下任何按钮的时间。。
然后用空字符替换所有“。”
字符,如
String data=View.getText().toString().replaceAll(“..”,”)
2.如果您限制用户何时键入,则为Edittext
编写一个TextWatcher
侦听器,您需要在那里进行一些验证…有两种可能性
如果要限制按下任何按钮的时间。。
然后用空字符替换所有“。”
字符,如
String data=View.getText().toString().replaceAll(“..”,”)
2.如果您限制用户何时键入,则为Edittext
编写一个TextWatcher
侦听器,您需要在那里进行一些验证…您是否尝试设置十进制输入类型
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|number"
/>
您是否尝试设置十进制输入类型
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal|number"
/>
试试这个:
int count = StringUtils.countOccurrencesOf((txtLdays, ".");
if (count > 1){
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
}
请下载此jar文件尝试以下操作:
int count = StringUtils.countOccurrencesOf((txtLdays, ".");
if (count > 1){
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
}
请下载此jar文件equals将检查对象。
您需要检查equalsIngnoreCase()代码>这将检查所有字符
特别需要
else if(txtLdays.getText().toString().trim().indexOf("..") != -1 ){
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
equals将检查对象。
您需要检查equalsIngnoreCase()代码>这将检查所有字符
特别需要
else if(txtLdays.getText().toString().trim().indexOf("..") != -1 ){
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
正确的方法是将值与正则表达式匹配
下面是一个示例,允许字符串以零或多个空格开始/结束,并包含双小数点:
//First make sure you avoid null pointer exception
if (txtLdays != null && txtLdays.getText() != null) {
String daysString = txtLdays.getText().toString();
String regex = "^\s*\d+\.\.\d+\s*$"
if (daysString.matches(regex)) {
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
}
您可以使用某种方法来验证匹配器。正确的方法是将值与正则表达式进行匹配
下面是一个示例,允许字符串以零或多个空格开始/结束,并包含双小数点:
//First make sure you avoid null pointer exception
if (txtLdays != null && txtLdays.getText() != null) {
String daysString = txtLdays.getText().toString();
String regex = "^\s*\d+\.\.\d+\s*$"
if (daysString.matches(regex)) {
txtLdays.requestFocus();
txtLdays.setError("Double decimal ?");
return false;
}
}
您可以使用某种方法来验证匹配程序。myEditText.setKeyListener(DigitsKeyListener.getInstance(true,true))
将edittext的输入类型设置为numberDecimal android:inputType=“numberDecimalA更可靠的方法是使用正则表达式匹配器。请参阅下面的完整答案。myEditText.setKeyListener(DigitsKeyListener.getInstance(true,true));
将edittext的输入类型设置为numberDecimal android:inputType=”numberDecimalA更健壮的方法是使用正则表达式匹配器。请看下面我的完整答案。当应用程序崩溃时,有没有通用的方法。它没有崩溃,而是显示一些错误并要求用户正确重试?@tusharnarang使用try-catch方法。如果发生错误,catch将获得该错误。那次我要敬酒。告诉用户再做一次。谢谢你会这样做的。。。回答得好。。但若用户只输入一个小数点,而忘记在小数点后输入0会怎样呢。。如果没有值,是否可以在小数点后添加zeoinputted@tusharnarang使用double结果=(double)12代码>返回12.0我应该在哪里使用这条线,先生?bcoz的问题是,当应用程序崩溃时,并不总是有任何通用的方法。它没有崩溃,而是显示一些错误并要求用户正确重试?@tusharnarang使用try-catch方法。如果发生错误,catch将获得该错误。那次我要敬酒。告诉用户再做一次。谢谢你会这样做的。。。回答得好。。但若用户只输入一个小数点,而忘记在小数点后输入0会怎样呢。。如果没有值,是否可以在小数点后添加zeoinputted@tusharnarang使用double结果=(double)12代码>返回12.0我应该在哪里使用这条线,先生?bcoz的问题是,当应用程序崩溃时,并不总是有任何通用的方法。它没有崩溃,而是显示一些错误并要求用户正确重试?@tusharnarang您可以通过android中的Thread.setDefaultUncaughtExceptionHandler处理崩溃。但这将发生在应用程序中的任何错误。您需要正确处理异常,然后只有您才能知道其原因。对于您的情况,请在从EditText获取值时处理异常。是的,但我不需要它,仅用于EditText我需要它。如果任何应用程序崩溃,则应出现toast或警报框Read.setDefaultUncaughtExceptionHandler(新的UncaughtExceptionHandler(){@Override public void uncaughtException(线程线程,Thread-Thread,Throwable-ex){});在何处使用此insisde函数?是否有任何通用方法可以在应用程序崩溃时使用。它不会崩溃,而是显示一些错误并要求用户正确重试?@tusharnarang您可以通过线程处理崩溃。android中的setDefaultUncaughtExceptionHandler。但这会在应用程序中发生任何错误。您需要正确处理异常en只有您知道它是从何处引起的。对于您从EditText获取值的案例句柄异常。是的,但我不需要它,仅对于EditText我需要它。如果任何应用程序崩溃,则应该出现toast或警报框Read.setDefaultUncaughtExceptionHandler(新UncaughtExceptionHandler(){@Override public