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
相关产品推荐
相关产品推荐

