检查只接受数字的编辑文本是否不为空且数字是否等于或小于 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
}
我正在构建一个接收成绩的应用程序,我想确保编辑文本不为空并且值小于或等于 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
}