整数解析无法将二进制转换为十进制

问题描述 投票:0回答:1

我正在开发一个将计算二进制两位数的应用程序。我正在使用两个EditText来获取输入。然后将值发送到两个字符串。然后使用Integer.parseInt(input, 2)将数字转换为整数以进行计算。但是当我使用Integer.parseInt时,应用程序崩溃了。

XML:

                <EditText
                    android:id="@+id/edit1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:hint="Enter 1st Value"
                    android:textSize="17sp" />

                <EditText
                    android:id="@+id/edit2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:hint="Enter 1st Value"
                    android:textSize="17sp" />

Java:

EditText input1, input2;
int number1, number2, number3;
String string1, string2, string3;

    input1 = findViewById(R.id.edit1);
    input2 = findViewById(R.id.edit2);
    result = findViewById(R.id.result);

    string1 = input1.getText().toString();
    string2 = input2.getText().toString();

    number1 = Integer.parseInt(string1, 2);
    number2 = Integer.parseInt(string2, 2);

    number3 = number1 + number2;

[当我使用number1 = Integer.parseInt(string1, 2);number2 = Integer.parseInt(string2, 2);应用时崩溃。

当我删除该部分时,该应用程序不会崩溃。

我已经搜索了各种解决方案,但没有任何效果。

注意:当我将字符串设置为某个值时,Inter.parseInt不会导致崩溃。

跟踪:01-07 22:37:53.015 23818-23818 / com.andronius.numberconverterplus V / ActivityThread:ActivityRecord {4e7848b token=android.os.BinderProxy@f77f968 {com.andronius.numberconverterplus / com.andronius.numberconverterplus.Calc}}: app=android.app.Application@2c57801,appName = com.andronius.numberconverterplus,pkg = com.andronius.numberconverterplus,comp = {com.andronius.numberconverterplus / com.andronius.numberconverterplus.Calc},dir = / data / app /com.andronius.numberconverterplus-2/base.apk01-07 22:37:53.024 23818-23818 / com.andronius.numberconverterplus E / MultiWindowProxy:getServiceInstance失败!01-07 22:37:53.214 23818-23818 / com.andronius.numberconverterplus D / AndroidRuntime:关闭VM01-07 22:37:53.241 23818-23818 / com.andronius.numberconverterplus E / AndroidRuntime:FATAL EXCEPTION:main进程:com.andronius.numberconverterplus,PID:23818java.lang.RuntimeException:无法启动活动ComponentInfo {com.andronius.numberconverterplus / com.andronius.numberconverterplus.Calc}:java.lang.NumberFormatException:无效的int:“”在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2583)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2665)在android.app.ActivityThread.-wrap11(ActivityThread.java)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1499)在android.os.Handler.dispatchMessage(Handler.java:111)在android.os.Looper.loop(Looper.java:207)在android.app.ActivityThread.main(ActivityThread.java:5765)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:794)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)原因:java.lang.NumberFormatException:无效的int:“”在java.lang.Integer.invalidInt(Integer.java:138)在java.lang.Integer.parseInt(Integer.java:358)在com.andronius.numberconverterplus.Calc.onCreate(Calc.java:37)在android.app.Activity.performCreate(Activity.java:6392)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2530)在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2665)在android.app.ActivityThread.-wrap11(ActivityThread.java)在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1499)在android.os.Handler.dispatchMessage(Handler.java:111)在android.os.Looper.loop(Looper.java:207)在android.app.ActivityThread.main(ActivityThread.java:5765)在java.lang.reflect.Method.invoke(本机方法)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:794)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)01-07 22:37:53.263 23818-23824 / com.andronius.numberconverterplus I / System:FinalizerDaemon:完成对象= 67801-07 22:37:59.113 23818-23865 / com.andronius.numberconverterplus D / OpenGLRenderer:〜CanvasContext()0x7fc72f0f70

java android string binary
1个回答
0
投票

在number1之前= Integer.parseInt(string1,2);您应该检查string1是有效数字。

至少我会做类似的事情:

try {
   if (string1 != null && string1.trim().equals("")) {
      number1 = Integer.parseInt(string1, 2);
   }
   // check other strings...
} catch (Exception e) {
    // do something if exception occur
}

注意:在onCreate()处,这些值(string1,string2,string3)可能为null或为空,并且它们将生成异常。

© www.soinside.com 2019 - 2024. All rights reserved.