2013-07-25 86 views
6

Tôi đã thử đoạn này, nhưng nó không hoạt độngKiểm tra giá trị nhập vào là số hay không

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

chăm lo rằng nó có thể chấp nhận hoặc username hoặc id để kiểm tra giá trị, tôi không muốn nó chỉ chấp nhận số !!

Trả lời

6

bộ EditText proprerty inputType = số nó sẽ luôn luôn lấy số như là đầu vào

android:inputType="number" 
+0

thnx, nhưng tôi đã viết một lưu ý rằng tôi muốn người dùng nhập vào cả số và ký tự, cho mỗi phần khác nhau của mã được thực thi –

0

Bạn không bao giờ nên sử dụng một ngoại lệ trong cách này thực sự. Khi bạn mong đợi một ngoại lệ được ném như thế này, bạn nên tìm một cách khác để xử lý nó.

Hãy thử sử dụng: http://developer.android.com/reference/android/widget/TextView.html#setRawInputType%28int%29

Something như thế này nên làm điều đó:

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

Có lẽ một cái gì đó như thế này:

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

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

Bạn có thể thay đổi các regex để phù hợp với các định dạng phức tạp.

5

Hãy thử với biểu thức chính quy này:

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

Sử dụng biểu thức này cho số Validate chỉ

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

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

trình excellent.Thanks. –

+0

Điều này làm việc cho tôi, ngoại trừ tôi đang cố gắng cho phép một số thập phân, và khi tôi sao chép một số như 33.8, nó không thành công ... làm cách nào để cập nhật regexStr để cho phép dấu thập phân? –

+0

bạn phải thay thế chuỗi "^ [0-9] * $" này bằng "^ [1-9] \ d * (\. \ D +)? $" –

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 

} 
5

Nếu giá trị boolean là đúng thì nó là số trường hợp giá trị chuỗi

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

hoặc f hoặc Ví dụ

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(); 
       } 
      } 
1

Sử dụng TextUtils chức năng lớp cho rằng

TextUtils.isDigitsOnly("gifg"); 

nó sẽ trở lại đúng nếu chỉ số đang có và false nếu bất kỳ ký tự tồn tại bên trong chuỗi

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

sử dụng phương pháp này

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

}

như thế này:

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