Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android:如果用户输入两个小数点,比如“0”,应用程序就会崩溃;1..5“;而不是",;1.5“;_Android_Decimal - Fatal编程技术网

android:如果用户输入两个小数点,比如“0”,应用程序就会崩溃;1..5“;而不是",;1.5“;

android:如果用户输入两个小数点,比如“0”,应用程序就会崩溃;1..5“;而不是",;1.5“;,android,decimal,Android,Decimal,我有一个android程序,我成功地限制了用户只输入小数点后的值。。问题是,如果用户输入两个小数点,如“1..”,则应用程序崩溃。我只允许使用一个特殊字符,即小数点本身。那么,我如何限制用户输入两个小数点,或者显示一些验证呢 我需要这样的东西 else if(txtLdays.getText().toString().trim().equals("..")) { txtLdays.requestFocus();

我有一个android程序,我成功地限制了用户只输入小数点后的值。。问题是,如果用户输入两个小数点,如“1..”,则应用程序崩溃。我只允许使用一个特殊字符,即小数点本身。那么,我如何限制用户输入两个小数点,或者显示一些验证呢

我需要这样的东西

  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;
intdouble

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;
intdouble

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