public String extracharge(String photographtablerow, String photocopytablerow) {
int totalamount = 0;
if (!photocopytablerow.equals("") && photocopytablerow.equals("")) {
totalamount = Integer.parseInt(photographtablerow) * 5 + Integer.parseInt(photocopytablerow) * 10;
} else if (!photocopytablerow.equals("")) {
totalamount = Integer.parseInt(photographtablerow) * 5;
} else if (!photographtablerow.equals("")) {
totalamount = Integer.parseInt(photocopytablerow) * 10;
}
return String.valueOf(totalamount);
}
这是我的函数我调用这个函数ontextChange
有两个EditText`。我想要这样的通话功能:
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
extraamount.setText(extracharge(numberofphtotgrabh.getText().toString(), numberofphotocopy.getText().toString()));
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
extraamount.setText(extracharge(numberofphtotgrabh.getText().toString(), numberofphotocopy.getText().toString()));
}
当我将此函数调用为show java.lang.NumberFormatException: Invalid int: ""
时,当我放置try-catch
时,输出始终为零。请帮我解决一下问题
答案 0 :(得分:0)
问题出现在if
声明
if (!photocopytablerow.equals("") && photocopytablerow.equals("")) {
应该是
if (!photocopytablerow.equals("") && !photographtablerow.equals("")) {
<强>更新强>
全球定义
int totalamount = 0;
并更新方法,如
public String extracharge(String photographtablerow, String photocopytablerow) {
if (!photocopytablerow.equals("") && !photographtablerow.equals("")) {
totalamount += Integer.parseInt(photographtablerow) * 5 + Integer.parseInt(photocopytablerow) * 10;
}else if (!photocopytablerow.equals("")) {
totalamount += Integer.parseInt(photocopytablerow) * 5;
} else if (!photographtablerow.equals("")) {
totalamount += Integer.parseInt(photographtablerow) * 10;
}
return String.valueOf(totalamount);
}
答案 1 :(得分:0)
像这样编辑你的代码。
public String extracharge(String photographtablerow, String photocopytablerow) {
int totalamount = 0;
try {
if (!photocopytablerow.equals(""))
totalamount += Integer.parseInt(photocopytablerow) * 10;
if (!photographtablerow.equals(""))
totalamount += Integer.parseInt(photographtablerow) * 5;
} catch(NumberFormatException e) {
return "0";
}
return String.valueOf(totalamount);
}
请记住,您必须确保两个字符串可以解析为Integer。
答案 2 :(得分:0)
实际问题是在photocopytable变量中,因为它包含“” 所以它无法解析为parseInt()。 允许对输入进行验证以仅输入整数。
答案 3 :(得分:0)
请勿使用.equals("")
,仅使用TextUtils.isEmpty(string)
。
虽然,你可以简单地捕获例外:
try {
<your code>
} catch(NumberFormatException e) {}