我的android应用程序因两个空的edittext字段而崩溃

我的android应用程序因两个空的edittext字段而崩溃,android,mobile,Android,Mobile,以上是我的代码,当我将其中任何一个留空时,它会崩溃。如何克服它。只需检查用户是否输入了任何内容,然后解析您的值: @Override public void onClick(View v) { float Percentage, newPercentage = 0; int Number; EditText Total = (EditText) findViewById(R.id.editText3); E

以上是我的代码,当我将其中任何一个留空时,它会崩溃。如何克服它。

只需检查用户是否输入了任何内容,然后解析您的值:

    @Override
    public void onClick(View v)

    {
        float Percentage, newPercentage = 0;
        int Number;
        EditText Total = (EditText) findViewById(R.id.editText3);
        EditText Done = (EditText) findViewById(R.id.editText4);

        float num1 = Float.parseFloat(Total.getText().toString());
        float num2 = Float.parseFloat(Done.getText().toString());




        Percentage = (num2 / num1) * 100;
}
}
试试这个

if(!Total.getText().toString().matches(""))
    float num1 = Float.parseFloat(Total.getText().toString());

若EditText不为空,则可以应用条件,然后代码就这样运行

  button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
if(!Total.getText().toString().trim().equals("")&&!Done.getText().toString().trim().equals("")){
                 float num1 = Float.parseFloat(Total.getText().toString());
                float num2 = Float.parseFloat(Done.getText().toString());

             Percentage = (num2 / num1) * 100;}
            }
        });
尝试使用Try…Catch

            float Percentage, newPercentage = 0;
            int Number;
            EditText Total = (EditText) findViewById(R.id.editText3);
            EditText Done = (EditText) findViewById(R.id.editText4);

            String total=Total.getText().toString();
            String done=Done.getText().toString();

            if (!total.isEmpty() && !done.isEmpty()) {

                float num1 = Float.parseFloat(Total.getText().toString());
                float num2 = Float.parseFloat(Done.getText().toString());


                Percentage = (num2 / num1) * 100;
            }else {
                Toast.makeText(OpenFile.this, "Fill values", Toast.LENGTH_SHORT).show();
            }

首先检查您是否正确找到editText 之后,还要检查isEmpty条件以避免NullPointer异常

 float num1 = 0.00f;
 float num2 = 0.00f;

try {
   num1 = Float.parseFloat(Total.getText().toString());
   num2 = Float.parseFloat(Done.getText().toString());
   Percentage = (num2 / num1) * 100;
}
catch(NumberFormatException ex) {
    //Handle Non Float Exception
   Toast.makeText(getApplicationContext(), "Invalid input !",Toast.LENGTH_LONG).show();
}

检查是否有空文本,如果不为空,则执行计算

if(!Total.getText().toString().isEmpty()&&!Done.getText().toString().isEmpty()){
float num1=float.parseFloat(Total.getText().toString());
float num2=float.parseFloat(Done.getText().toString());
百分比=(num2/num1)*100;}
}

});发布完整代码您应该处理NumberParseException,在您的情况下,如果您将空字符串传递给parseFloat()函数,则有可能出现异常。是的,它与NumberFormatException一起工作。是的,它对我有效。
if (!editText1.getText().toString().isEmpty() && !editText2.getText().toString().isEmpty()){
    float num1 = Float.parseFloat(Total.getText().toString());
    float num2 = Float.parseFloat(Done.getText().toString());
}