2016-08-01 7 views
-1

Если я оставлю некоторые текстовые поля пустыми и неожиданно нажмите кнопку приложения, мне нужно вычислить сумму, назначив незаполненные текстовые поля 0 и вычислить сумму. предоставить некоторые решенияКогда я нажимаю кнопку, мое приложение неожиданно останавливается

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); 

      } 

     }); 


     } 



    } 

Вот мой 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 Your 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 Your 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 Your 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 Your 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 Your 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 Your 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 Your 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 Your 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> 

Вот мой 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) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
08-01 23:11:16.079 15049-15055/com.sabari.myapplication W/art: Suspending all 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 to 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! The application may be doing too much work on its main thread. 
08-01 23:11:19.488 15049-15049/com.sabari.myapplication I/Choreographer: Skipped 70 frames! The application may be doing too much work on its 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: "" 
                       at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
                       at java.lang.StringToReal.parseDouble(StringToReal.java:267) 
                       at java.lang.Double.parseDouble(Double.java:301) 
                       at com.sabari.myapplication.MainActivity$1.onClick(MainActivity.java:83) 
                       at android.view.View.performClick(View.java:5198) 
                       at android.view.View$PerformClick.run(View.java:21147) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at 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) would have incorrectly overridden the 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 to 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: "" 
                       at java.lang.StringToReal.invalidReal(StringToReal.java:63) 
                       at java.lang.StringToReal.parseDouble(StringToReal.java:267) 
                       at java.lang.Double.parseDouble(Double.java:301) 
                       at com.sabari.myapplication.MainActivity$1.onClick(MainActivity.java:83) 
                       at android.view.View.performClick(View.java:5198) 
                       at android.view.View$PerformClick.run(View.java:21147) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:148) 
                       at android.app.ActivityThread.main(ActivityThread.java:5417) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                       at 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 
+1

сообщение StackTrace. – slanecek

+0

какие ошибки ???? – alway5dotcom

+0

мая Если вы ошиблись * Идентификатор * отправлен, также разместите свой код * activity_main xml *. –

ответ

0

Если у вас есть пустые editexts, как вы сказали, в вашем вопросе, линии:

no1 = Double.parseDouble(et1.getText().toString()); 
.... 

выбросит java.lang.NumberFormatException, который перехватывается. Вам нужно положить их в блок try-catch. Кроме того, реорганизуйте свой код. Если в Android Studio нажмите Ctrl + Alt + L, чтобы изменить свой код.

0

Если результат str = et1.getText().toString() пуст, то при вызове Double.parseDouble(str) выдается исключение NumberFormatException. Вам нужно проверить, пусты ли пустые, прежде чем пытаться их разобрать, или же обернуть каждый вызов синтаксического анализа в блок try-catch (в любом случае, хорошая идея, так как что-то происходит, если текст содержит что-то, что невозможно разобрать в double?

Кроме того, что тип возвращаемого et1.getText()? Если это String, нет необходимости вызывать ToString() на нем.

+0

Я избил вас на него :). JK – Shaishav

+0

Угадайте, что я медленный типер. – FredK

+0

Я получаю ввод как двойной в текстовом поле редактирования и сохраняю его в двойной переменной no1, no2, соответственно Если я не вводил ввод в одном из текстовых полей редактирования и нажимал кнопку, чтобы вычислить неожиданное приложение, –

Смежные вопросы