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

时间:2016-09-04 13:55:18

标签: android validation user-input is-empty range-checking

我正在构建一个接收成绩的应用程序,我想确保编辑文本不为空且值小于或等于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:致命异常:主要       处理:com.example.nima.myapplication,PID:8649       java.lang.IllegalStateException:无法执行活动的方法               在android.view.View $ 1.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)               at java.lang.reflect.Method.invokeNative(Native Method)               在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)               at dalvik.system.NativeStart.main(Native Method)        引起:java.lang.reflect.InvocationTargetException               at java.lang.reflect.Method.invokeNative(Native Method)               在java.lang.reflect.Method.invoke(Method.java:515)               在android.view.View $ 1.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)   at java.lang.reflect.Method.invokeNative(Native Method)   在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)   at dalvik.system.NativeStart.main(Native Method)        引起:java.lang.NumberFormatException:无效的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)   at java.lang.reflect.Method.invokeNative(Native Method)   在java.lang.reflect.Method.invoke(Method.java:515)   在android.view.View $ 1.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)   at java.lang.reflect.Method.invokeNative(Native Method)   在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.main(本地方法)

5 个答案:

答案 0 :(得分:1)

首先放入XML EditText输入类型=数字

然后编写此代码

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

     }
}

答案 1 :(得分:0)

在声明了edittext的xml中,请确保将以下属性放在edittext元素

android:inputType="number"

将上面的代码更改为:

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

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

答案 2 :(得分:0)

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

所以...当你在editText上没有任何值时,getText()。toString()返回这个“”并且不可能将这个值解析为Int,所以你必须首先检查length()和之后检查数字是否大于100

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

答案 3 :(得分:0)

如果您想控制输入的数字,请使用Attempted to load class "PayUController" from namespace "Payment\PayUBundle\Controller". Did you forget a "use" statement for another namespace?

android:digits=""强制打开数字键盘仍然可以按下其他字符,例如&#34; #,。&#34;可能导致 NumberFormatException

android:inputType="number"

android:digits =&#34; 0123456789&#34; 只接受<EditText android:inputType="number" android:digits="0123456789" /> 中的 0123456789 ,而不接受任何其他字符

  

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

EditText

答案 4 :(得分:-1)

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

  

引起:java.lang.NumberFormatException:

我建议将EditText值存储在不同的String中,然后检查将其类型化为Integer,很多时候编译器会在那里混淆。

希望这会有所帮助:)