我正在java.lang.NumberFormatException: Invalid int: error
我认为声明是合适的
声明如下:
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText num1 = (EditText)findViewById(R.id.num1);
final EditText num2 = (EditText)findViewById(R.id.num2);
final EditText resu = (EditText)findViewById(R.id.resu);
resu.setFocusableInTouchMode(false);
resu.setFocusable(false);
resu.setClickable(false);
final Button plus = (Button)findViewById(R.id.plus);
final String n1 = num1.getText().toString();
final String n2 = num2.getText().toString();
点击程序:
plus.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View view) {
try{
float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
String a = Float.toString(sum);
a = a.trim();
resu.setText(""+a);
}catch(Exception e){
resu.setText(""+e);
}
}
);
答案 0 :(得分:2)
在onlick()
方法中移动以下代码,因为在oncreate()
中,如果EditText
为空,则会返回空字符串(“”),因此您需要获取值单击按钮时,而不是之前:
final String n1 = num1.getText().toString();
final String n2 = num2.getText().toString();
要:
plus.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
try {
final String n1 = num1.getText().toString();
final String n2 = num2.getText().toString();
float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
String a = Float.toString(sum);
a = a.trim();
resu.setText(""+a);
} catch(Exception e) {
resu.setText(""+e);
}
}
});
答案 1 :(得分:0)
问题在于Integer
对象到float
原始类型转换。我想如果你输入一个整数,那么你的代码应该可以正常工作。代码
float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
但如果它不是一个完整的数字,那么为了使NumberFormatException
无法将String
转换为适当的原始数据类型。
并检查n1
中的空字符串("")和n2
下的if(n1=="")
plus.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
try
{
final String n1 = num1.getText().toString();
final String n2 = num2.getText().toString();
if(n1==""){
n1="0";
}
float sum = Float.valueOf(n1) + Float.valueOf(n2);
String a = Float.toString(sum);
a = a.trim();
resu.setText(""+a);
}
catch(Exception e)
{
resu.setText(""+e);
}
}
});