if leave of text boxes empty , click button app stops unexpectedly,i need calculate sum assigning unfilled text boxes 0 , calculate sum.please provide solutions
package com.sabari.myapplication; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.text.inputtype; import android.text.textutils; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.textview; import android.text.editable; public class mainactivity extends appcompatactivity { textview tv1; textview tv2; textview tv3; textview tv4; textview tv5; textview tv6; textview tv7; textview tv8; textview tv10; edittext et1; edittext et2; edittext et3; edittext et4; edittext et5; edittext et6; edittext et7; edittext et8; button b1; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); tv1 = (textview)findviewbyid(r.id.textview); tv2 = (textview)findviewbyid(r.id.textview2); tv3 = (textview)findviewbyid(r.id.textview3); tv4 = (textview)findviewbyid(r.id.textview4); tv5 = (textview)findviewbyid(r.id.textview5); tv6 = (textview)findviewbyid(r.id.textview6); tv7 = (textview)findviewbyid(r.id.textview7); tv8 = (textview)findviewbyid(r.id.textview8); b1=(button)findviewbyid(r.id.button); b1.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { et1 = (edittext)findviewbyid(r.id.edittext); et2 = (edittext)findviewbyid(r.id.edittext2); et3 = (edittext)findviewbyid(r.id.edittext3); et4 = (edittext)findviewbyid(r.id.edittext4); et5 = (edittext)findviewbyid(r.id.edittext5); et6 = (edittext)findviewbyid(r.id.edittext6); et7 = (edittext)findviewbyid(r.id.edittext7); et8 = (edittext)findviewbyid(r.id.edittext8); tv10 = (textview)findviewbyid(r.id.textview10); int n; double no1,no2,no3,no4,no5,no6,no7,no8; no1 = double.parsedouble(et1.gettext().tostring()); no2 = double.parsedouble(et2.gettext().tostring()); no3 = double.parsedouble(et3.gettext().tostring()); no4 = double.parsedouble(et4.gettext().tostring()); no5 = double.parsedouble(et5.gettext().tostring()); no6 = double.parsedouble(et6.gettext().tostring()); no7 = double.parsedouble(et7.gettext().tostring()); no8 = double.parsedouble(et8.gettext().tostring()); if (no2 <= 0||textutils.isempty(et2.gettext().tostring())) { no2=0; n = 1; } else if (no3 <= 0||textutils.isempty(et3.gettext())) { no3=0; n = 2; } else if (no4 <= 0||textutils.isempty(et4.gettext())) { no4=0; n = 3; } else if (no5 <= 0||textutils.isempty(et5.gettext())) { no5=0; n = 4; } else if (no6 <= 0||textutils.isempty(et6.gettext())) { no6=0; n = 5; } else if (no7 <= 0||textutils.isempty(et7.gettext())) { no7=0; n = 6; } else if (no8 <= 0||textutils.isempty(et8.gettext())) { no8=0; n = 7; } else { n = 8; } double res=0; res = (no1+no2+no3+no4+no5+no6+no7+no8)/n; tv10.settext(""+res); } }); } }
here xml
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" tools:context="com.sabari.myapplication.mainactivity"> <scrollview android:layout_width="fill_parent" android:layout_height="fill_parent"> <linearlayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 1st semester gpa" android:id="@+id/textview" /> <edittext android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 2nd semester gpa" android:id="@+id/textview2" /> <edittext android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext2" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 3rd semester gpa" android:id="@+id/textview3" /> <edittext android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext3" android:layout_gravity="center_horizontal" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 4th semester gpa" android:id="@+id/textview4" /> <edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext4" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 5th semester gpa" android:id="@+id/textview5" /> <edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext5" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 6th semester gpa" android:id="@+id/textview6" /> <edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext6" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 7th semester gpa" android:id="@+id/textview7" /> <edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext7" android:layout_gravity="center_horizontal" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancesmall" android:text="enter 8th semester gpa" android:id="@+id/textview8" /> <edittext android:layout_width="match_parent" android:layout_height="wrap_content" android:inputtype="numberdecimal" android:ems="10" android:id="@+id/edittext8" android:layout_gravity="center_horizontal" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="new button" android:id="@+id/button" android:layout_gravity="center_horizontal" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="new text" android:id="@+id/textview10" /> </linearlayout> </scrollview> </linearlayout>
here logcat
08-01 23:11:06.724 15049-15049/com.sabari.myapplication i/art: not late-enabling -xcheck:jni (already on) 08-01 23:11:07.906 15049-15049/com.sabari.myapplication w/system: classloader referenced unknown path: /data/app/com.sabari.myapplication-1/lib/x86 08-01 23:11:15.089 15049-15049/com.sabari.myapplication w/system: classloader referenced unknown path: /data/app/com.sabari.myapplication-1/lib/x86 08-01 23:11:16.037 15049-15049/com.sabari.myapplication w/art: before android 4.1, method android.graphics.porterduffcolorfilter android.support.graphics.drawable.vectordrawablecompat.updatetintfilter(android.graphics.porterduffcolorfilter, android.content.res.colorstatelist, android.graphics.porterduff$mode) have incorrectly overridden package-private method in android.graphics.drawable.drawable 08-01 23:11:16.079 15049-15055/com.sabari.myapplication w/art: suspending threads took: 6.289ms 08-01 23:11:16.254 15049-15100/com.sabari.myapplication d/openglrenderer: use egl_swap_behavior_preserved: true [ 08-01 23:11:16.333 15049:15049 d/ ] hostconnection::get() new host connection established 0xaa9a85f0, tid 15049 08-01 23:11:16.825 15049-15100/com.sabari.myapplication i/openglrenderer: initialized egl, version 1.4 08-01 23:11:17.577 15049-15100/com.sabari.myapplication w/egl_emulation: eglsurfaceattrib not implemented 08-01 23:11:17.577 15049-15100/com.sabari.myapplication w/openglrenderer: failed set egl_swap_behavior on surface 0xae63fc40, error=egl_success 08-01 23:11:17.874 15049-15049/com.sabari.myapplication i/choreographer: skipped 66 frames! application may doing work on main thread. 08-01 23:11:19.488 15049-15049/com.sabari.myapplication i/choreographer: skipped 70 frames! application may doing work on main thread. 08-01 23:11:41.841 15049-15049/com.sabari.myapplication d/androidruntime: shutting down vm 08-01 23:11:41.848 15049-15049/com.sabari.myapplication e/androidruntime: fatal exception: main process: com.sabari.myapplication, pid: 15049 java.lang.numberformatexception: invalid double: "" @ java.lang.stringtoreal.invalidreal(stringtoreal.java:63) @ java.lang.stringtoreal.parsedouble(stringtoreal.java:267) @ java.lang.double.parsedouble(double.java:301) @ com.sabari.myapplication.mainactivity$1.onclick(mainactivity.java:83) @ android.view.view.performclick(view.java:5198) @ android.view.view$performclick.run(view.java:21147) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 08-01 23:11:47.178 15049-15049/com.sabari.myapplication i/process: sending signal. pid: 15049 sig: 9 08-01 23:31:19.040 15155-15155/com.sabari.myapplication w/system: classloader referenced unknown path: /data/app/com.sabari.myapplication-1/lib/x86 08-01 23:31:21.349 15155-15155/com.sabari.myapplication w/system: classloader referenced unknown path: /data/app/com.sabari.myapplication-1/lib/x86 08-01 23:31:21.417 15155-15155/com.sabari.myapplication w/art: before android 4.1, method android.graphics.porterduffcolorfilter android.support.graphics.drawable.vectordrawablecompat.updatetintfilter(android.graphics.porterduffcolorfilter, android.content.res.colorstatelist, android.graphics.porterduff$mode) have incorrectly overridden package-private method in android.graphics.drawable.drawable 08-01 23:31:21.471 15155-15209/com.sabari.myapplication d/openglrenderer: use egl_swap_behavior_preserved: true [ 08-01 23:31:21.474 15155:15155 d/ ] hostconnection::get() new host connection established 0xad17f430, tid 15155 [ 08-01 23:31:21.516 15155:15209 d/ ] hostconnection::get() new host connection established 0xad17f6d0, tid 15209 08-01 23:31:21.522 15155-15209/com.sabari.myapplication i/openglrenderer: initialized egl, version 1.4 08-01 23:31:21.599 15155-15209/com.sabari.myapplication w/egl_emulation: eglsurfaceattrib not implemented 08-01 23:31:21.599 15155-15209/com.sabari.myapplication w/openglrenderer: failed set egl_swap_behavior on surface 0xaaabbd00, error=egl_success 08-01 23:31:37.374 15155-15155/com.sabari.myapplication d/androidruntime: shutting down vm 08-01 23:31:37.375 15155-15155/com.sabari.myapplication e/androidruntime: fatal exception: main process: com.sabari.myapplication, pid: 15155 java.lang.numberformatexception: invalid double: "" @ java.lang.stringtoreal.invalidreal(stringtoreal.java:63) @ java.lang.stringtoreal.parsedouble(stringtoreal.java:267) @ java.lang.double.parsedouble(double.java:301) @ com.sabari.myapplication.mainactivity$1.onclick(mainactivity.java:83) @ android.view.view.performclick(view.java:5198) @ android.view.view$performclick.run(view.java:21147) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 08-01 23:31:48.516 15155-15155/com.sabari.myapplication i/process: sending signal. pid: 15155 sig: 9
when have empty editexts said in question, lines:
no1 = double.parsedouble(et1.gettext().tostring()); ....
will throw java.lang.numberformatexception
uncaught. need put them in try-catch block. also, refactor code. if in android studio press ctrl+alt+l rearrange code.
Comments
Post a Comment