2013-07-25 7 views
6

ich diesen Schnipsel habe versucht, aber es funktioniert nichtprüfen eingegebene Wert ist die Nummer oder nicht

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

sorgen dafür, dass es entweder Benutzernamen oder die ID akzeptieren können den Wert zu überprüfen, ich nicht will es nur Zahlen akzeptieren !!

Antwort

6

Satz EditText proprerty input = Anzahl es immer Zahlen nehmen als Eingabe

android:inputType="number" 
+0

thnx, aber ich schrieb eine Notiz, dass ich der Benutzer möchte –

0

Sie sollten nie wirklich eine Ausnahme in dieser Art und Weise nutzen. Wenn Sie erwarten, dass eine Ausnahme wie diese ausgelöst wird, sollten Sie eine alternative Möglichkeit finden, sie zu behandeln.

Versuchen Sie es mit: http://developer.android.com/reference/android/widget/TextView.html#setRawInputType%28int%29

So etwas sollte es tun:

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

Vielleicht so etwas wie dieses:

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

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

können Sie die Regex ändern komplexe Formate anzupassen.

5

Versuchen mit diesem regulären Ausdruck:

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

Mit diesem Ausdruck für validate Zahl nur

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

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

Works excellent.Thanks ausgeführt werden. –

+0

Das funktioniert für mich, außer dass ich versuche, auch eine Dezimalzahl zuzulassen, und wenn ich eine Zahl wie 33.8 kopiere, schlägt es fehl ... Wie aktualisiere ich die regexStr, um auch den Dezimalpunkt zuzulassen? –

+0

müssen Sie diese "^ [0-9] * $" Zeichenfolge durch "^ [1-9] \ d * (\. \ D +) ersetzen? $" –

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

Wenn Booleschen Wert wahr ist, dann ist es die Nummer sonst String-Wert

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

oder f oder Beispiel

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

Verwenden TextUtils Klassenfunktion für die

TextUtils.isDigitsOnly("gifg"); 

wird es wahr zurück, wenn nur Ziffern sind und falsch, wenn jedes Zeichen existiert innerhalb Zeichenfolge

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

Verwendung dieses Verfahren

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

}

wie folgt aus: sowohl Anzahl und Zeichen eingeben, für jedes unterschiedliche Stück Code

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