检查只接受数字的“编辑文本”是否不为空,并且数字是否等于或小于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.myapplicationE/AndroidRuntime: FATAL EXCEPTION: main过程:com.example.nima。myapplication, PID: 8649illegalstateexception:无法执行活动的方法在1.美元android.view.View onclick (View.java: 3827)android.view.View.performClick (View.java: 4442)android.view.View PerformClick.run美元(View.java: 18473)android.os.Handler.handleCallback (Handler.java: 733)android.os.Handler.dispatchMessage (Handler.java: 95)android.os.Looper.loop (Looper.java: 136)android.app.ActivityThread.main (ActivityThread.java: 5103)在java.lang.reflect.Method。invokeNative(本地方法)java.lang.reflect.Method.invoke (Method.java: 515)com.android.internal.os.ZygoteInit MethodAndArgsCaller.run美元(ZygoteInit.java: 790)com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 606)在dalvik.system.NativeStart。主要(本地方法)原因:java.lang.reflect.InvocationTargetException在java.lang.reflect.Method。invokeNative(本地方法)java.lang.reflect.Method.invoke (Method.java: 515)在1.美元android.view.View onclick (View.java: 3822)             android.view.View.performClick (View.java: 4442)             android.view.View PerformClick.run美元(View.java: 18473)             android.os.Handler.handleCallback (Handler.java: 733)             android.os.Handler.dispatchMessage (Handler.java: 95)             android.os.Looper.loop (Looper.java: 136)             android.app.ActivityThread.main (ActivityThread.java: 5103)             在java.lang.reflect.Method。invokeNative(本地方法)             java.lang.reflect.Method.invoke (Method.java: 515)             com.android.internal.os.ZygoteInit MethodAndArgsCaller.run美元(ZygoteInit.java: 790)             com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 606)             在dalvik.system.NativeStart。主要(本地方法)java.lang.NumberFormatException: Invalid int: "java.lang.Integer.invalidInt (Integer.java: 137)java.lang.Integer.parseInt (Integer.java: 358)java.lang.Integer.parseInt (Integer.java: 331)com.example.nima.myapplication.MainActivity.me (MainActivity.java: 22)             在java.lang.reflect.Method。invokeNative(本地方法)             java.lang.reflect.Method.invoke (Method.java: 515)             在1.美元android.view.View onclick (View.java: 3822)             android.view.View.performClick (View.java: 4442)             android.view.View PerformClick.run美元(View.java: 18473)             android.os.Handler.handleCallback (Handler.java: 733)             android.os.Handler.dispatchMessage (Handler.java: 95)             android.os.Looper.loop (Looper.java: 136)             android.app.ActivityThread.main (ActivityThread.java: 5103)             在java.lang.reflect.Method。invokeNative(本地方法)             java.lang.reflect.Method.invoke (Method.java: 515)             com.android.internal.os.ZygoteInit MethodAndArgsCaller.run美元(ZygoteInit.java: 790)             com.android.internal.os.ZygoteInit.main (ZygoteInit.java: 606)             在dalvik.system.NativeStart。主要(本地方法)

在您声明edittext的xml中确保您将以下属性放入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 )
     {
     }
}

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

android:inputType="number"强制打开数字型键盘,用户仍然可以按其他字符,如"#,"。

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

android:digits="0123456789"只接受EditText0123456789字符,不接受其他字符

在转换任何字符串整数之前,必须检查它是否为

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

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

所以…当你在editText上没有任何值的时候getText()。tostring()返回这个"这个值不可能被解析为整型所以你必须先检查长度()然后检查数字是否大于100

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

您的logcat声明您正在输入一个字符串,而代码需要一个整数。

由:java.lang.NumberFormatException:

引起

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

希望这对你有帮助

相关内容

  • 没有找到相关文章

最新更新