数字格式异常 invalid int
number format exception invalid int
我必须从列表视图向我的 sql lite 添加值。在我的列表视图中有两个编辑文本和文本视图。我只想从每个编辑文本中获取值并将其乘以相应的文本视图值。当我是 运行 应用程序时,我不需要为每个编辑文本输入数据。因此,我以 "number format exception : invalid int" 结尾。从其他示例中,我可以理解空值的乘法可能会导致错误。如何跳过迭代中包含的空值编辑文本?
这是我的代码
protected void InsertDb() {
// TODO Auto-generated method stub
DatabaseHelper databasecontroller = new DatabaseHelper(Orders.this);
List<Map<String, String>> data = null;
data = new ArrayList<Map<String, String>>();
if(list != null){
for(int i = 0; i< list.getChildCount();i++){
View vie = list.getChildAt(i);
EditText ed1= (EditText) vie.findViewById(R.id.cases);
EditText ed2 = (EditText) vie.findViewById(R.id.pcs);
String qty = ed1.getText().toString();
TextView tv = (TextView)findViewById(R.id.srp);
String imsrpv= tv.getText().toString();
float srps = Float.valueOf(imsrpv);
int qtys = Integer.valueOf(qty);
float amts = srps * qtys;
String amount = Float.toString(amts);
datanum.put("A",qty );
datanum.put("B",ed2.getText().toString() );
datanum.put("L", amount);
Log.d("value of amnt",amount);
databasecontroller.entercustdetails(datanum);
}
}
Log.v("compleated", data.toString());
}
提前致谢..
检查从 edittext 返回的值是否是一个正确的数字,或者它不是 null.if 一个空值在那里它可能会给出 exeception numberformat.you 必须处理这个。
如果两者都正确那么你也可以
float srps=0.0;
int qtys=0;
try
{
srps = Float.valueOf(imsrpv);
qtys = Integer.valueOf(qty);
}
catch (NumberFormatException e)
{
srps =//Default value you want;
qtys =//Default value you want;
}
希望它有用..
你的问题不是你如何解析这些值。解释:
parseFloat()
、parseInt()
将 return 的原始类型 int
和 float
以及 valueOf()
return 的新类型Integer
和 Float
的类型。此外,parseInt()
、parseFloat()
会识别加号和减号,而 valueOf()
不会。这就是两者之间的区别 types/methods。您的问题似乎是,该值为空,您可以通过以下方式简单地摆脱它:
//set a default float and int
float srps = 0.0;
int qtys = 0;
//now parse the values by checking if the strings are not null or empty
if(imsrpv!=null&&!imsrpv.isEmpty()){
srps = Float.valueOf(imsrpv);
}
if(qty!=null&&!qty.isEmpty()){
qtys = Integer.valueOf(qty);
}
就像我说的,如果这些值有加号或减号并且对您的需求很重要,您应该使用 parse 方法。此外,您不需要新的 Integer
或 Float
类型,因此更正确的做法是使用 parse()
方法。
我必须从列表视图向我的 sql lite 添加值。在我的列表视图中有两个编辑文本和文本视图。我只想从每个编辑文本中获取值并将其乘以相应的文本视图值。当我是 运行 应用程序时,我不需要为每个编辑文本输入数据。因此,我以 "number format exception : invalid int" 结尾。从其他示例中,我可以理解空值的乘法可能会导致错误。如何跳过迭代中包含的空值编辑文本? 这是我的代码
protected void InsertDb() {
// TODO Auto-generated method stub
DatabaseHelper databasecontroller = new DatabaseHelper(Orders.this);
List<Map<String, String>> data = null;
data = new ArrayList<Map<String, String>>();
if(list != null){
for(int i = 0; i< list.getChildCount();i++){
View vie = list.getChildAt(i);
EditText ed1= (EditText) vie.findViewById(R.id.cases);
EditText ed2 = (EditText) vie.findViewById(R.id.pcs);
String qty = ed1.getText().toString();
TextView tv = (TextView)findViewById(R.id.srp);
String imsrpv= tv.getText().toString();
float srps = Float.valueOf(imsrpv);
int qtys = Integer.valueOf(qty);
float amts = srps * qtys;
String amount = Float.toString(amts);
datanum.put("A",qty );
datanum.put("B",ed2.getText().toString() );
datanum.put("L", amount);
Log.d("value of amnt",amount);
databasecontroller.entercustdetails(datanum);
}
}
Log.v("compleated", data.toString());
}
提前致谢..
检查从 edittext 返回的值是否是一个正确的数字,或者它不是 null.if 一个空值在那里它可能会给出 exeception numberformat.you 必须处理这个。 如果两者都正确那么你也可以
float srps=0.0;
int qtys=0;
try
{
srps = Float.valueOf(imsrpv);
qtys = Integer.valueOf(qty);
}
catch (NumberFormatException e)
{
srps =//Default value you want;
qtys =//Default value you want;
}
希望它有用..
你的问题不是你如何解析这些值。解释:
parseFloat()
、parseInt()
将 return 的原始类型 int
和 float
以及 valueOf()
return 的新类型Integer
和 Float
的类型。此外,parseInt()
、parseFloat()
会识别加号和减号,而 valueOf()
不会。这就是两者之间的区别 types/methods。您的问题似乎是,该值为空,您可以通过以下方式简单地摆脱它:
//set a default float and int
float srps = 0.0;
int qtys = 0;
//now parse the values by checking if the strings are not null or empty
if(imsrpv!=null&&!imsrpv.isEmpty()){
srps = Float.valueOf(imsrpv);
}
if(qty!=null&&!qty.isEmpty()){
qtys = Integer.valueOf(qty);
}
就像我说的,如果这些值有加号或减号并且对您的需求很重要,您应该使用 parse 方法。此外,您不需要新的 Integer
或 Float
类型,因此更正确的做法是使用 parse()
方法。