Проверить введенное значение - номер или нет.

Я пробовал этот фрагмент, но он не работает

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!!!!!!!!!!!^^^");
}

заботиться о том, чтобы он мог принимать либо имя пользователя, либо идентификатор, чтобы проверить значение, Я не хочу, чтобы он принимал только числа!

Ответ 1

Используйте это выражение только для проверки числа

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

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

Ответ 2

Если логическое значение равно true, это число, в противном случае строковое значение

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

или для примера

String text = edt_email.getText().toString();
            boolean digitsOnly = TextUtils.isDigitsOnly(text);
            if (digitsOnly) {
                 if (text.length() == 0) {
                    Toast.makeText(getApplicationContext(), "field can't be empty.", Toast.LENGTH_LONG).show();
                 } else {
                   Toast.makeText(getApplicationContext(), "field is int value", Toast.LENGTH_LONG).show();
                 }
            }else {
                    Toast.makeText(getApplicationContext(), "Field is string value", Toast.LENGTH_LONG).show();
                }
            }

Ответ 3

установить значение параметра EditText proprertyType = number, который всегда будет принимать числа в качестве входных данных

android:inputType="number"

Ответ 4

Попробуйте с этим регулярным выражением:

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!!!!!!!!!!!^^^");
 }

Ответ 5

Используйте функцию класса TextUtils для этого

TextUtils.isDigitsOnly("gifg");

он вернет true, если существуют только цифры и false, если какой-либо символ существует внутри строки

Ответ 6

Вы никогда не должны использовать исключение таким образом. Когда вы ожидаете, что исключение будет выбрано так, вы должны найти альтернативный способ его обработки.

Попробуйте использовать: 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);

Ответ 7

Возможно, что-то вроде этого:

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

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

Вы можете изменить регулярное выражение для соответствия сложным форматам.

Ответ 8

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

}

Ответ 9

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");
}

Ответ 10

использовать этот метод

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

как это:

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

Ответ 11

Я использую эту функцию для проверки трехзначных значений Integer и Float с двумя позициями после десятичной точки. Если вы не хотите ограничивать количество цифр, удалите {x, x} из регулярного выражения.

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

Ответ 12

на активность просто добавьте внутри андроида: inputType = "number"