java应用程序在尝试从EditText解析整数时崩溃
我是编程新手,正在做一些小项目。然而,我被困在一个地方,我不知道如何解决这个问题
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
String inter = editText1.getText().toString();
String interT = editText2.getText().toString();
String NAT = editText3.getText().toString();
String skip = editText4.getText().toString();
if (TextUtils.isEmpty(inter) && TextUtils.isEmpty(interT) && TextUtils.isEmpty(NAT))
{
editText1.setError("Please Fill The Field");
editText2.setError("Please Fill The Field");
editText3.setError("Please Fill The Field");
}
else
{
int INTER = Integer.valueOf(editText1.getText().toString());
int INTER_T = Integer.valueOf(editText2.getText().toString());
int NATT = Integer.valueOf(editText3.getText().toString());
int SKIP = Integer.valueOf(editText4.getText().toString());
float result = (INTER / INTER_T) * 80 + (NATT / 100) * 20;
t.setText(String.valueOf(result));
}
}
});
以下是错误:
java.lang.NumberFormatException: Invalid int: ""
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at java.lang.Integer.valueOf(Integer.java:525)
at com.example.iubmeritcalculator.BS_ProgramActivity$1.onClick(BS_ProgramActivity.java:70)
at 安卓.view.View.performClick(View.java:5052)
at 安卓.view.View$PerformClick.run(View.java:20162)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:135)
at 安卓.app.ActivityThread.main(ActivityThread.java:5753)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
# 1 楼答案
在这种情况下,您必须检查skip“skip”的值是否为空。 应用程序崩溃,因为“inter”、“interT”和“NAT”值不为null,但当“skip”值为null时,您正在将空字符串转换为int
所以我认为这会解决你的问题。 谢谢
# 2 楼答案
我认为这种情况是错误的。这三个条件都必须为真
if (TextUtils.isEmpty(inter) && TextUtils.isEmpty(interT) && TextUtils.isEmpty(NAT))
因此,如果其中一个是空的,它就会转到
else
分支,你的应用程序会因为其中一个是空的而崩溃