单击按钮时应用程序崩溃

Application crash on Button clicked

我正在制作一个应用程序,其中包含三个 editText 和一个按钮。我正在做的是在 EditText 中获取一些输入,进行计算,然后按下按钮转到另一个 activity.

我的问题是当我不输入任何值并按下按钮时应用程序崩溃 这是我的代码-

     btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            Double x  = Double.parseDouble(editText1.getText().toString());

            try{

            if(x == null || x.equals("")){

                Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                  return;
            }else{

            }
            }
                catch(Exception e){
                    Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                }

            Double y  = Double.parseDouble(editText2.getText().toString());

            try{

                if(y == null || y.equals("")){

                    Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                      return;
                }else{

                }
                }
                    catch(Exception e){
                        Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                    }


            Double z  = Double.parseDouble(editText3.getText().toString());

            try{

                if(z == null || z.equals("")){

                    Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                      return;
                }else{

                }
                }
                    catch(Exception e){
                        Toast.makeText(getApplicationContext(), "Insert All The Fields", Toast.LENGTH_LONG).show();
                    }

            i = x+y+z;

            Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
            intent.putExtra("key", +i);
            startActivity(intent);

这是 Logcat

01-04 05:43:20.342: E/AndroidRuntime(1814): FATAL EXCEPTION: main
01-04 05:43:20.342: E/AndroidRuntime(1814): Process: com.example.calculatorpd, PID: 1814
01-04 05:43:20.342: E/AndroidRuntime(1814): java.lang.NumberFormatException: Invalid double: ""
01-04 05:43:20.342: E/AndroidRuntime(1814):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at java.lang.StringToReal.parseDouble(StringToReal.java:248)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at java.lang.Double.parseDouble(Double.java:295)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at com.example.calculatorpd.MainActivity.onClick(MainActivity.java:76)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.view.View.performClick(View.java:4438)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.view.View$PerformClick.run(View.java:18422)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.os.Handler.handleCallback(Handler.java:733)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.os.Handler.dispatchMessage(Handler.java:95)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.os.Looper.loop(Looper.java:136)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at android.app.ActivityThread.main(ActivityThread.java:5017)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at java.lang.reflect.Method.invokeNative(Native Method)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at java.lang.reflect.Method.invoke(Method.java:515)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-04 05:43:20.342: E/AndroidRuntime(1814):     at dalvik.system.NativeStart.main(Native Method)

问题是您正在解析一些空文本。 因此,在执行导致异常的双重解析之前,首先检查文本本身。

     btn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

           Double x, y,z;

            try
            {
             String a = editText1.getText().toString();

             if(a == null || a.equals(""))
             {
                 x = 0;
                 Toast.makeText(getApplicationContext(), 
                 "Insert All The Fields", Toast.LENGTH_LONG).show();
                  return;
            }
            else
            {
              x  = Double.parseDouble(a);
            }
            }
                catch(Exception e){
                    Toast.makeText(getApplicationContext(), 
                    "Insert All The Fields", Toast.LENGTH_LONG).show();
                }



            try{

                 String b = editText2.getText().toString();

               if(b == null || b.equals(""))
             {
                    y = 0;
                    Toast.makeText(getApplicationContext(), 
                    "Insert All The Fields", Toast.LENGTH_LONG).show();
                      return;
                }else{
                 y  = Double.parseDouble(editText2.getText().toString());
                }
                }
                    catch(Exception e){
                        Toast.makeText(getApplicationContext(), 
                        "Insert All The Fields", Toast.LENGTH_LONG).show();
                    }




            try{
                 String c = editText3.getText().toString();

               if(c == null || c.equals(""))
             {

                    z = 0;
                    Toast.makeText(getApplicationContext(), 
                    "Insert All The Fields", Toast.LENGTH_LONG).show();
                      return;
                }else{
                   z  = Double.parseDouble(editText3.getText().toString());
                }
                }
                    catch(Exception e){
                        Toast.makeText(getApplicationContext(), 
                        "Insert All The Fields", Toast.LENGTH_LONG).show();
                    }

            i = x +y+z;
            Intent intent = new Intent(getApplicationContext(),SecondActivity.class);
            intent.putExtra("key", +i);
            startActivity(intent);

在你使用这条线之前

Double x  = Double.parseDouble(editText1.getText().toString());

您需要检查该字符串是否代表数字。

    if(editText1.getText().toString() == null || editText1.getText().toString().equals("")){

        Toast.makeText(getApplicationContext(), 
        "Insert All The Fields", Toast.LENGTH_LONG).show();
          return;
     }else{
             Double x  = Double.parseDouble(editText1.getText().toString());
     }

您需要添加更多测试来验证这只是一个数字