Android Integer.parseInt负数

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

我是开发新手,所以很抱歉,如果我的问题很简单,我正在为D&D开发一个应用程序。当用户在第一个edittext中插入一个数字时,我使用edittext的onTextChanged,所以我将Text设置为第二个edittex的结果。

我的问题只发生在复选框被选中的时候。如果不勾选复选框,工作正常,但是如果勾选复选框,应用程序会做一个总和(熟练度bonus + mod)。它可以工作,但只适用于正数。当应用程序设置f.e.的速度时,应用程序会崩溃。-5 应用程序就会崩溃。数据都保存在sharedpreferences中。

checkBox_strength.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            if(checkBox_strength.isChecked()) {

                float result_num;
                int num1, num2;
                int f= 0;

                DecimalFormat df = new DecimalFormat("0.##########");

                num1 = Integer.parseInt(proficiencybonus.getText().toString());

                if (strength_mod.getText().toString().length() > 0) {
                    num2 = Integer.parseInt(strength_mod.getText().toString());

                } else {
                    num2=f;

                }

                result_num = num1 + num2;
                strength_save.setText(" = " + df.format(result_num));


                editor.putBoolean("checkBox_strength", true);
                editor.apply();
            }else{
                editor.putBoolean("checkBox_strength", false);
                editor.apply();
            }
        }
    });

试过其他的东西,但我不能去寻找解决方案

float result_num;
                int num1, num2;
                int f= 0;

                DecimalFormat df = new DecimalFormat("0.##########");

                num1 = Integer.parseInt(proficiencybonus.getText().toString());

                if (strength_mod.getText().toString().length() > 0) {
                    num2 = Integer.parseInt(strength_mod.getText().toString());

                } else {
                    num2=f;

                }

                result_num = num1 + Math.abs(num2);
                strength_save.setText(" = " + df.format(result_num));

这是我崩溃的错误,它崩溃了 "num2 = Integer.parseInt(strength_mod.getText().toString());"

2020-05-03 17:09:24.440 10318-10318/jekanapplication.charactersheet5e E/AndroidRuntime: FATAL EXCEPTION: main
Process: jekanapplication.charactersheet5e, PID: 10318
java.lang.NumberFormatException: For input string: "−1"
    at java.lang.Integer.parseInt(Integer.java:608)
    at java.lang.Integer.parseInt(Integer.java:643)
    at jekanapplication.charactersheet5e.MainActivity$51.onCheckedChanged(MainActivity.java:1394)
    at android.widget.CompoundButton.setChecked(CompoundButton.java:172)
    at android.widget.CompoundButton.toggle(CompoundButton.java:128)
    at android.widget.CompoundButton.performClick(CompoundButton.java:133)
    at android.view.View$PerformClick.run(View.java:24931)
    at android.os.Handler.handleCallback(Handler.java:808)
    at android.os.Handler.dispatchMessage(Handler.java:101)
    at android.os.Looper.loop(Looper.java:166)
    at android.app.ActivityThread.main(ActivityThread.java:7529)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

enter image description here

android textview android-edittext
1个回答
0
投票

在XML中定义这个属性。android:inputType="numberSigned"


0
投票

问题是如何在第二个edittext中设置文本,是使用onTextchange的第一个edittext,我设置的文本edittext.settext"-2 "我已经改变了edittext.settext "R.String.two_",所以当我得到的文本,我没有问题,当我得到的字符串。

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