无法将字符串转换为int - 应用程序停止

时间:2017-03-27 19:54:09

标签: android string android-studio

我需要一个很大的帮助..

我使用一个简单的代码将String转换为Int,当我模拟应用程序停止的语音时,我不明白原因,我尝试过以多种方式转换它,但是当我运行模拟器或我的智能手机应用程序甚至没有打开,。

package development.idea.tisco.reformaprevidencia;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    // DECLARANDO COMPONENTES

    private RadioGroup grupo;
    private EditText idade;
    private EditText inss;
    private TextView pontos;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // VINCULANDO COMPONENTES

        grupo = (RadioGroup) findViewById(R.id.radio_group_id);
        idade = (EditText) findViewById(R.id.idade_id);
        inss = (EditText) findViewById(R.id.inss_id);
        pontos = (TextView) findViewById(R.id.pontos_id);


        // CAPTURANDO STRING

        String textoIdade = idade.getText().toString();
        String textoInss = inss.getText().toString();

        // CONVERTENDO PARA NUMERO

        int valorIdade = Integer.parseInt(textoIdade);
        int valorInss = Integer.parseInt(textoInss);


    }
}

我希望你能帮助我。

非常感谢你。

3 个答案:

答案 0 :(得分:1)

我敢打赌,当您将空String传递到Integer.parseInt()时,您获得的是NumberFormatException。您可以通过使用TextUtils.isDigitsOnly()检查包装parseInt语句来避免这种情况。

例如:

int valorIdade = 0;
int valorInss = 0;

if (TextUtils.isDigitsOnly(textoIdade)) {
    valorIdade = Integer.parseInt(texttoIdade);
}

if (TextUtils.isDigitsOnly(textoInss)) {
    valorInss = Integer.parseInt(textoInss);
}

所以你的完整课程如下:

package development.idea.tisco.reformaprevidencia;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.text.TextUtils;

public class MainActivity extends AppCompatActivity {

    // DECLARANDO COMPONENTES

    private RadioGroup grupo;
    private EditText idade;
    private EditText inss;
    private TextView pontos;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // VINCULANDO COMPONENTES

        grupo = (RadioGroup) findViewById(R.id.radio_group_id);
        idade = (EditText) findViewById(R.id.idade_id);
        inss = (EditText) findViewById(R.id.inss_id);
        pontos = (TextView) findViewById(R.id.pontos_id);


        // CAPTURANDO STRING

        String textoIdade = idade.getText().toString();
        String textoInss = inss.getText().toString();

        // CONVERTENDO PARA NUMERO
        int valorIdade = 0;
        int valorInss = 0;

        if (TextUtils.isDigitsOnly(textoIdade)) {
            valorIdade = Integer.parseInt(texttoIdade);
        }

        if (TextUtils.isDigitsOnly(textoInss)) {
            valorInss = Integer.parseInt(textoInss);
        }
    }
}

答案 1 :(得分:0)

试试这个

 int valorIdade,valorInss;
   if(!TextUtils.isEmpty(textoIdade)){
      int valorIdade = Integer.parseInt(textoIdade);
    }
          if(!TextUtils.isEmpty(textoInss)){
      valorInss = Integer.parseInt(textoInss);
    }

答案 2 :(得分:0)

我建议您检查android studio中的“Android Monitor”选项卡,看看您的应用程序抛出什么异常并导致应用程序停止。
另外,我猜问题是你在使用Integer.parseInt()的地方。此方法不解析不是完全数字的字符串。例如:

Integer.parseInt("some text"); // throws java.lang.NumberFormatException
Integer.parseInt("1245");  // this one works without error

顺便说一下,如果你将代码的一部分包装在try / catch和某些地方的日志错误(如android监视器)中以防止应用程序崩溃,那就更好了