You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio抛物射高计算APP空输入崩溃问题求助

解决EditText为空时计算按钮导致应用崩溃的问题

首先澄清:你提到的FloatingActionButton和这个问题无关,崩溃的核心原因是当EditText为空时,调用Double.parseDouble()解析空字符串会抛出NumberFormatException,直接导致应用崩溃。下面是具体的修复方案:

修复步骤

我们需要在计算前添加输入校验,并捕获可能的异常,确保应用不会崩溃:

  • 获取输入文本时先去除首尾空格,判断是否为空
  • 若为空,用Toast提示用户补全输入
  • 用try-catch包裹数字解析和计算逻辑,处理非数字格式的输入情况

修改后的完整Java代码

public class MainActivity extends AppCompatActivity {

    private EditText velocityEditText;
    private EditText angleEditText;
    private Button calculateButton;
    private TextView resultTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        velocityEditText = findViewById(R.id.velocity_edit_text);
        angleEditText = findViewById(R.id.angle_edit_text);
        calculateButton = findViewById(R.id.calculateButton);
        resultTextView = findViewById(R.id.result_text_view);

        calculateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 获取输入并去除首尾空格
                String velocityStr = velocityEditText.getText().toString().trim();
                String angleStr = angleEditText.getText().toString().trim();

                // 校验输入是否为空
                if (velocityStr.isEmpty() || angleStr.isEmpty()) {
                    Toast.makeText(MainActivity.this, "请填写完整的速度和角度值", Toast.LENGTH_SHORT).show();
                    return;
                }

                try {
                    // 解析输入并计算
                    double velocity = Double.parseDouble(velocityStr);
                    double angle = Double.parseDouble(angleStr);
                    double radians = Math.toRadians(angle);
                    // 变量名优化:原range改为maxHeight,更贴合最大高度的语义
                    double maxHeight = ((Math.pow(velocity, 2)) * (Math.pow(Math.sin(radians), 2))) / (2 * 9.81);
                    resultTextView.setText("Altura Máxima: " + String.format("%.2f", maxHeight) + " m");
                } catch (NumberFormatException e) {
                    // 处理非数字格式的输入
                    Toast.makeText(MainActivity.this, "请输入有效的数字", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }
            }
        });
    }
}

关键说明

  • 输入校验:用trim()去除用户可能输入的空格,避免" "这种空白字符串被误判为有效输入
  • Toast提示:给用户明确的反馈,知道需要补全输入或纠正格式
  • 异常捕获:即使用户输入了非数字内容(比如字母),也能捕获异常,避免应用崩溃
  • 变量名优化:把range改为maxHeight,更符合计算的是最大高度的语义

内容的提问来源于stack exchange,提问作者i53cde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:47:16