我调用函数时出现的数字格式异常

时间:2016-03-16 09:40:10

标签: android

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时,输出始终为零。请帮我解决一下问题

4 个答案:

答案 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) {}