java.lang.NumberFormatException:无效整数:“”
java.lang.NumberFormatException: Invalid int: “”
我得到 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);
}
}
);
将以下代码移到您的 onlick()
方法中,因为在您的 oncreate()
中,如果 EditText
为空,它将 return 空字符串 (""),因此您需要在单击按钮时获取值,而不是在单击按钮之前:
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);
}
}
});
问题在于 Integer
对象到 float
原始类型的转换。我认为如果您输入一个整数,那么您的代码应该可以正常工作。代码
float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
但是,如果它不是整数,那么为了反驳 NumberFormatException
,您无法将 String
转换为适当的原始数据类型。
并通过 if(n1=="")
检查 n1
和 n2
中的空字符串 ("")
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);
}
}
});
我得到 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);
}
}
);
将以下代码移到您的 onlick()
方法中,因为在您的 oncreate()
中,如果 EditText
为空,它将 return 空字符串 (""),因此您需要在单击按钮时获取值,而不是在单击按钮之前:
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);
}
}
});
问题在于 Integer
对象到 float
原始类型的转换。我认为如果您输入一个整数,那么您的代码应该可以正常工作。代码
float sum = Integer.valueOf(n1) + Integer.valueOf(n2);
但是,如果它不是整数,那么为了反驳 NumberFormatException
,您无法将 String
转换为适当的原始数据类型。
并通过 if(n1=="")
n1
和 n2
中的空字符串 ("")
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);
}
}
});