Android 我得到了这个错误:java.lang.NumberFormatException:对于输入字符串:"&引用;

Android 我得到了这个错误:java.lang.NumberFormatException:对于输入字符串:"&引用;,android,Android,基本上,当我尝试将字符串转换为int时,当没有任何字符串出现问题时,我遇到了这个错误,但“”仍然应该为null,或者“”并且我无法处理它。 例如,我想创建只有两个字段name和age的联系人,但只有name对我很重要 public class Contact { public String name; public int age; public Contact(String name) { this.name = name; } public Contact() { } pu

基本上,当我尝试将字符串转换为int时,当没有任何字符串出现问题时,我遇到了这个错误,但“”仍然应该为null,或者“”并且我无法处理它。 例如,我想创建只有两个字段name和age的联系人,但只有name对我很重要

public class Contact {

public String name;
public int age;

public Contact(String name) {
    this.name = name;
}

public Contact() {

}
 public Contact(String name,int age) {
    this.name = name;
    this.age=age
}
}

在代码部分,出于某种原因,我需要用户添加新联系人,插入年龄并不重要。 用户提交后,我希望获得新的联系人

EditText editName=findviewByid(r.id.edit_name);
EditText editAge=findviewByid(r.id.edit_age);
.
.
.
当用户单击“提交”按钮时:

String name = editName.getText().toString().trim();

String age = editAge.getText().toString().trim();

Contact contact =new (name,Integer.parseInt(age));
若用户并没有输入年龄,我们得到了这个错误

java.lang.NumberFormatException: For input string: ""

由于Integer.parseInt的工作方式,您会看到此错误

从:

帕森特

在API级别1中添加了公共静态int-parseInt(字符串s)

解析 字符串参数为带符号的十进制整数

小说中的人物 字符串必须全部为十进制数字,但第一个字符可能 是ASCII减号“-”(“\u002D”)以指示负值或 表示正值的ASCII加号“+”(“\u002B”)

返回结果的整数值,就像参数和 基数10作为parseInt(java.lang.String)的参数提供, int)方法

参数s字符串:包含要使用的int表示形式的字符串 解析

返回int中由参数表示的整数值 十进制

如果字符串不包含 可解析整数。


您必须将一个带有数字的字符串传递给parseInt。

根据
parseInt
的工作方式,这是正确的。您必须检查从文本视图收到的值是否为
null
empty
。你可以这样做:

String name = editName.getText().toString().trim();
String age = editAge.getText().toString().trim();

// You have to think about what value you want to give to your `age` variable in
// the case of `null`. This depends on you, I have given it a value of -1 just for
// demonstration. You also need to make sure that you only allow numeric input in 
// your text field, or otherwise you need to make sure you can cast the provided 
// input to an integer before using `parseInt`
int ageInt = !TextUtils.isEmpty(age) ? Integer.parseInt(age) : -1
Contact contact =new (name, ageInt);

你必须检查
empty
也因为
empty
不是一个数字tanks,你是对的,但是当用户没有输入任何数字时,如果我不想强迫用户输入任何东西,我该如何处理它呢; 但是像以前一样出现了错误。我做了一个小编辑,发送
ageInt
,而不是
Contact
构造函数中的
age
参数。希望它能解决你的问题。