java - 错误 java.lang.NumberFormatException:对于输入字符串,程序崩溃
问题描述
我已经实现了一个应用程序,它从用户那里获取读数并返回一条消息,但是在尝试打开活动时会发生以下错误:
2019-04-21 10:03:27.179 4338-4338/com.example.mymedicare E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mymedicare, PID: 4338
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mymedicare/com.example.mymedicare.enteringReadings}: java.lang.NumberFormatException: For input string: ""
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.Integer.parseInt(Integer.java:620)
at java.lang.Integer.parseInt(Integer.java:643)
at com.example.mymedicare.enteringReadings.onCreate(enteringReadings.java:28)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770
public class enteringReadings extends AppCompatActivity {
private MyDBHelper db;
//declares values
private Button Enter;
private EditText Temprature;
private EditText lowerBlood;
private EditText higherBlood;
private EditText heartBeat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_entering_readings);
//Reads values as integers
Temprature = findViewById(R.id.Temprature);
int temprature =Integer.parseInt( Temprature.getText().toString());
lowerBlood = findViewById(R.id.lowerBlood);
int Lowerblood =Integer.parseInt( lowerBlood.getText().toString());
higherBlood = findViewById(R.id.higherBlood);
int Higherblood =Integer.parseInt( higherBlood.getText().toString());
heartBeat = findViewById(R.id.heartBeat);
int Heartbeat =Integer.parseInt( heartBeat.getText().toString());
Button Enter = findViewById(R.id.Enter);
db = new MyDBHelper(this);
Enter.setOnClickListener((View.OnClickListener) this);
if (temprature <= 37 && Lowerblood <=80 && Higherblood <=120 && Heartbeat <= 72 );
Toast.makeText(getApplicationContext(),"Your readings are fine no action required",Toast.LENGTH_LONG);
}
}
我希望应用程序允许用户输入他们的读数,我还没有实现其他两种情况,但在尝试运行应用程序后注意到了这个错误。
解决方案
Temprature.getText()
返回空字符串。空字符串不能转换为Integer
. 将try-catch
块添加到您的代码中以处理NumberFormatException
.
int temprature = 0;
try {
temprature = Integer.parseInt(Temprature.getText().toString());
} catch (NumberFormatException e) {
// Log error, change value of temperature, or do nothing
}
推荐阅读
- apache-nifi - 如何在“ExecuteGroovyScript”处理器中使用“DBCPConnectionPoolLookup”控制器服务
- angular - Angular - 电子邮件验证不起作用
- php - 用于异步发送队列电子邮件的 CURL 太快,重复发送
- gravity-forms-plugin - 如何使用 wordpress 重力形式的 curl 使用 Bearer 令牌授权垂直响应
- java - HttpSession Junit 测试
- mysql - 尝试从 MySql 中的相关表中更新列
- api - 查询参数在 GraphQL 中传播
- javascript - angularjs中div的多选和单选
- string - sed 替换一个字符串
- windows - 识别给定的计算机域(如果他们有 Skype for Business 应用程序)