Android 除以 0 时的计算器错误消息

Android calculator error message when dividing by 0

我是 Android Studio 的新手,我正在开发一个计算器应用程序。现在,当我除以零时,自然会收到错误消息 "Infinity",但如果我想将其更改为 "Could not divide by zero",我该怎么做呢?

  import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class Divisionpage extends AppCompatActivity implements View.OnClickListener {
        private Button btnDiv;
        private TextView AnswDiv;
        private EditText Divt1, Divt2;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_divisionssida);
            init();
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);

            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
                }
            });
        }

        private void init() {
            btnDiv = (Button)findViewById(R.id.btnDiv);
            AnswDiv = (TextView)findViewById(R.id.AnswDiv);
            Divt1 = (EditText)findViewById(R.id.Divtal1);
            Divt2 = (EditText)findViewById(R.id.Divtal2);
            btnDiv.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            String num7 = Divt1.getText().toString();
            String num8 = Divt2.getText().toString();
            switch (v.getId()){
                case R.id.btnDiv:
                    try {
                        float division = Float.parseFloat(num7) / Float.parseFloat(num8);
                        AnswDiv.setText(String.valueOf(division));
                    }catch (Exception e) {
                        AnswDiv.setText("Could not divide!");
                    }
                    break;
            }
        }
    }

如您所见,我尝试捕获异常以显示错误消息,但失败了。你有什么建议?

好吧,您实际上可以检查 num8 值,如果它的 0 设置了正确的消息。

 @Override
    public void onClick(View v) {
        String num7 = Divt1.getText().toString();
        String num8 = Divt2.getText().toString();
        switch (v.getId()){
            case R.id.btnDiv:
                try {
                    final float denominator = Float.parseFloat(num8);
                    if(denominator == 0){
                        AnswDiv.setText("Can't divide by zero");
                        return;
                    }
                    float division = Float.parseFloat(num7) / Float.parseFloat(num8);
                    AnswDiv.setText(String.valueOf(division));
                }catch (Exception e) {
                    AnswDiv.setText("Could not divide!");
                }
                break;
        }
    }

您可以通过异常处理进一步改善用户体验,例如: 除非在 edittext 中受到限制,否则 MIME 用户可能会引入非数字字符。尝试解析所述字符将抛出 NumberFormatException,它将在您的异常子句中被捕获并设置您的消息。这虽然没有错,但可以改进,通知用户只有数字字符有效。

catch (NumberFormatException ex){
     AnswDiv.setText("Only numbers allowed!");
}