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

Android奇偶判断应用调用Integer.parseInt报NumberFormatException如何修复

错误原因
  • 语法误用:你误将获取输入框内容的代码用双引号包裹,导致num变量的值就是(edttext.getText()).toString()这段纯文本,而非输入框的内容,转换为整数时直接触发格式错误。
  • 逻辑位置错误:读取输入、转整数的代码写在了Activity启动时执行的onCreate方法中,此时用户还没有输入任何内容,就算修正引号问题,拿到的也是空字符串,转换整数依然会崩溃。
修复代码

将onCreate中读取输入的代码删除,调整按钮点击事件的逻辑,新增输入合法性校验和异常捕获,修改后的完整代码如下:

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {

    public TextView text1;
    public EditText edttext;
    public Button btn1;

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

        text1= (TextView) findViewById(R.id.txt1);
        edttext= (EditText) findViewById(R.id.edttxt);
        btn1= (Button) findViewById(R.id.btn);
       
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 点击按钮时才读取输入内容
                String inputContent = edttext.getText().toString().trim();
                // 空输入校验
                if (inputContent.isEmpty()) {
                    Toast.makeText(MainActivity.this, "请先输入数字", Toast.LENGTH_SHORT).show();
                    return;
                }
                try {
                    // 转换为整数,捕获格式异常
                    int inputNum = Integer.parseInt(inputContent);
                    findOddEven(inputNum);
                } catch (NumberFormatException e) {
                    Toast.makeText(MainActivity.this, "请输入有效的整数", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    public void findOddEven(int num1) {
        if (num1%2==0) {
            text1.setText("Your Number Is Even!");
        }else {
            text1.setText("Your Number Is Odd!");
        }
    }
}
核心修改点
  • 删除了onCreate中错误的读取输入、转整数的代码
  • 将读取输入的逻辑移到按钮点击回调中,确保是用户输入后才执行
  • 新增空输入校验、非数字输入的异常捕获,避免极端场景下崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:09:02