猿问

单击按钮后,我的应用程序不断崩溃

我一直在自己编写应用程序,但是每次单击一个按钮时都会遇到一些问题(因为问题出在其 OnCreate 方法中)。我已将其范围缩小到我认为的原因,似乎是这条线:


int desitky_tom = Integer.parseInt(et_tom.getText().toString());

我想将String我收到的 et_tom 变量从 aneditText更改为 an int。这可能是原因吗?如果是,我该如何更改它以使应用程序不再崩溃?


这是我的 Logcat 错误日志:


2019-02-07 16:51:16.272 2794-2794/? E/AndroidRuntime: FATAL EXCEPTION: main

Process: com.example.mariaspocitadlo, PID: 2794

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.mariaspocitadlo.MainActivity$1.onClick(MainActivity.java:41)

    at android.view.View.performClick(View.java:6897)

    at android.widget.TextView.performClick(TextView.java:12693)

    at android.view.View$PerformClick.run(View.java:26101)

    at android.os.Handler.handleCallback(Handler.java:789)

    at android.os.Handler.dispatchMessage(Handler.java:98)

    at android.os.Looper.loop(Looper.java:164)

    at android.app.ActivityThread.main(ActivityThread.java:6944)

    at java.lang.reflect.Method.invoke(Native Method)

    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

这是其余的代码:


final Button spocitat = (Button) findViewById(R.id.button);

    spocitat.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

            //editext Toma na desítky Toma

            EditText et_tom = (EditText)findViewById(R.id.editText);

            int desitky_tom = Integer.parseInt(et_tom.getText().toString());




慕桂英546537
浏览 79回答 2
2回答

潇潇雨雨

从您的 LogCat 来看,输入的字符串是"". (LogCat 中的第 3 行)。因此它不是一个数字,不能转换为int。您应该确保输入一个数字,以阻止崩溃围绕您的代码,try例如catch:try { EditText et_tom = (EditText)findViewById(R.id.editText); int desitky_tom = Integer.parseInt(et_tom.getText().toString());} catch (Exception e) { System.out.println(e.toString()); }除了循环输入并确保输入的文本仅来自数字数组。

慕莱坞森

您需要将整数解析包含在 try/catch 块中以避免NumberFormatException例如:int desitky_tat = 0;try {     desitky_tat = Integer.parseInt(et_tat.getText().toString());} catch (NumberFormatException e) {     //handle exception - if required}它崩溃的原因是因为EditText按下按钮时您可能有空文本或非数字文本,从而导致应用程序崩溃。
随时随地看视频慕课网APP

相关分类

Java
我要回答