检查只接受数字的编辑文本是否不为空且数字是否等于或小于 100

Check if an Edit Text that only accepts number is not empty and the number is equal or less than 100

我正在构建一个接收成绩的应用程序,我想确保编辑文本不为空并且值小于或等于 100 我写了这一行,但它使应用程序崩溃

if(Integer.parseInt(editText.gettext().toString()) > 100 || editText.getText().toString().trim().length() == 0)
{
//Error message for example
} 

这是 logCat

09-04 18:21:06.331 8649-8649/com.example.nima.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.nima.myapplication, PID: 8649 java.lang.IllegalStateException: Could not execute method of the activity at android.view.View.onClick(View.java:3827) at android.view.View.performClick(View.java:4442) at android.view.View$PerformClick.run(View.java:18473) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at android.view.View.onClick(View.java:3822)             at android.view.View.performClick(View.java:4442)             at android.view.View$PerformClick.run(View.java:18473)             at android.os.Handler.handleCallback(Handler.java:733)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:136)             at android.app.ActivityThread.main(ActivityThread.java:5103)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)             at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NumberFormatException: Invalid int: "" at java.lang.Integer.invalidInt(Integer.java:137) at java.lang.Integer.parseInt(Integer.java:358) at java.lang.Integer.parseInt(Integer.java:331) at com.example.nima.myapplication.MainActivity.me(MainActivity.java:22)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at android.view.View.onClick(View.java:3822)             at android.view.View.performClick(View.java:4442)             at android.view.View$PerformClick.run(View.java:18473)             at android.os.Handler.handleCallback(Handler.java:733)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:136)             at android.app.ActivityThread.main(ActivityThread.java:5103)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:606)             at dalvik.system.NativeStart.main(Native Method)

您的 logcat 声明您输入的是字符串,而代码需要整数。

Caused by: java.lang.NumberFormatException:

我的建议是将 EditText 值存储在不同的字符串中,然后将其类型转换为整数,很多时候编译器会在那里感到困惑。

希望对您有所帮助:)

在您的 xml 中声明了 edittext 的地方确保将以下属性放入 edittext 元素

android:inputType="number"

并将上面的代码更改为:

 if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
    {
    //Error message for example
    } 

你首先需要检查文本是否不为空

首先你输入你的 XML EditText Input Type=Number

然后写这段代码

If(edittext.getString().toString().Trim().lenght()>0)
{
     If(Integer.parseInt(editText.gettext().toString()) <= 100 )
     {

     }
}

你只需要切换 if 的第二个和第一个表达式。因为当程序运行时,它首先检查第一个表达式,然后检查第二个表达式。

所以...当您在 editText 上没有任何值时,getText().toString() return 这个“”无法解析为 Int 该值,因此您必须检查首先是 length() 然后检查数字是否大于 100

if(editText.getText().toString().trim().isEmpty() || Integer.parseInt(editText.gettext().toString()) > 100 )
{
//Error message for example
} 

如果您想控制应输入的数字,请使用 android:digits=""

android:inputType="number" 强制打开数字类型键盘,用户仍然可以按其他字符,如“#,.”,这可能会导致 NumberFormatException

<EditText
    android:inputType="number"
    android:digits="0123456789"
/>

android:digits="0123456789" 只接受 0123456789 in EditText,不接受任何其他字符

Before converting any string integer you must check if it is empty

String strNumber=editText.getText().toString().trim();
 if(TextUtils.isEmpty(strNumber) || Integer.parseInt(strNumber)>100){
   // show your error message
}