检查输入的值是否为数字

时间:2013-07-25 08:55:40

标签: android integer

我已尝试过此代码段,但无效

try 
    {
    Integer.parseInt(enteredID.getText().toString());
    Log.i("enteredID value", "enterdID is numeric!!!!!!!!!!!^^^");
    flag=1;
} catch (NumberFormatException e) {
    flag=-1;
    Log.i("enteredID value", "enterdID isn't numeric!!!!!!!!!!!^^^");
}

注意它可以接受用户名或ID来检查值, 我不希望它只接受数字!!

13 个答案:

答案 0 :(得分:18)

将此表达式用于仅验证号码

String regexStr = "^[0-9]*$";

if(et_number.getText().toString().trim().matches(regexStr))
{
    //write code here for success
}
else{
    // write code for failure
}

答案 1 :(得分:13)

如果布尔值为true,则为数字,否则为字符串值

$expression

或示例

boolean digitsOnly = TextUtils.isDigitsOnly(editText.getText());

答案 2 :(得分:6)

设置EditText proprerty inputType = number它总是将数字作为输入

android:inputType="number"

答案 3 :(得分:5)

尝试使用此正则表达式:

String regex = "-?\\d+(\\.\\d+)?";

if (enteredID.getText().toString().matches(regex))  {
     Log.i("enteredID value", "enterdID is numeric!!!!!!!!!!!^^^");
     flag=1;
 } else {
     flag=-1;
     Log.i("enteredID value", "enterdID isn't numeric!!!!!!!!!!!^^^");
 }

答案 4 :(得分:3)

使用<?php echo form_open('lang') ?>类功能

TextUtils

如果只有数字,它将返回true,如果字符串

中存在任何字符,则返回false

答案 5 :(得分:0)

你绝不应该以这种方式使用异常。当你期望像这样抛出异常时,你应该找到另一种处理它的方法。

尝试使用:http://developer.android.com/reference/android/widget/TextView.html#setRawInputType%28int%29

这样的事情应该这样做:

editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL | InputType.TYPE_NUMBER_FLAG_SIGNED);

答案 6 :(得分:0)

也许是这样的:

    String text = enteredID.getText().toString();

    if(text.matches("\\w+")){
      //--words--
    }else if (text.matches("\\d+")){
      //--numeric--
    }else {
      //-- something else --
    }

您可以更改正则表达式以匹配复杂格式。

答案 7 :(得分:0)

Pattern ptrn = Pattern.compile(regexStr);

if (!ptrn.matcher(et_number.getText().toString().trim()).matches()) {

    //write code here for success

}else{

    //write code here for success

}

答案 8 :(得分:0)

String text = editText123.getText().toString();
try {
   int num = Integer.parseInt(text);
   Log.i("",num+" is a number");
} catch (NumberFormatException e) {
   Log.i("",text+" is not a number");
}

答案 9 :(得分:0)

使用此方法

 boolean isNumber(String string) {
    try {
      int amount = Integer.parseInt(string);
      return true;
    } catch (Exception e) {
      return false;
    }
  }
像这样:

if (isNumber(input)) {
  // string is int
}

答案 10 :(得分:0)

我使用此功能检查小数点后两个位置的三位数Integer和Float值。如果您不想限制位数,请从正则表达式中删除{x,x}。

private boolean isNumeric(String string) {
     if(Pattern.matches("\\d{1,3}((\\.\\d{1,2})?)", string))
          return true;
     else
          return false;
}

答案 11 :(得分:0)

在活动上,只需在 android:inputType =“ number”

答案 12 :(得分:0)

/**
 * If @param digit is null or not any of the numbers - @return false.
 */
static boolean isNumber(String digit) {
    try {
        Double.parseDouble(digit);
    } catch (NullPointerException | NumberFormatException ignored) {
        return false;
    }
    return true;
}