我需要一个很大的帮助..
我使用一个简单的代码将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);
}
}
我希望你能帮助我。
非常感谢你。
答案 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监视器)中以防止应用程序崩溃,那就更好了