尝试使用“Integer.parseInt(*)”时出错

时间:2014-01-13 17:17:41

标签: android android-layout android-intent

这是我的代码:

void openContactsList() {
    // TODO Auto-generated method stub
    // getting phone number and name of the contacts
    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
    String[] projection = new String[] {
            ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER };
    Cursor people = getContentResolver().query(uri, projection, null, null,
            null);
    int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
    int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
    j = 0;
    people.moveToFirst();
    ContactsDataBase entry = new ContactsDataBase(Contacts.this);
    entry.open();
    do {
        LinearLayout row = new LinearLayout(this);
        row.setLayoutParams(params);
        for (j = 0; (j < 3) && next; j++) {
            // create the person and put it in the db table

            String name = people.getString(indexName);
            String number = people.getString(indexNumber);
            // create every person Image button
            CheckBox btnTag = new CheckBox(this);
            butparams.setMargins(j, 10, 0, 0);
            btnTag.setGravity(10);
            btnTag.setLayoutParams(butparams);
            btnTag.setText(number + "\n" + name);
            btnTag.setTextSize(10);
            btnTag.setTag("Button " + name);
            try {
                int num = Integer.parseInt(number);
                btnTag.setId(num);
            } catch (NumberFormatException nfe) {
                // Handle parse error.
            }
            entry.createEntry(name, number, indexNumber);
            btnTag.getLayoutParams().width = 70;
            btnTag.getLayoutParams().height = 70;
            next = people.moveToNext();
            row.addView(btnTag);
        }
        layout12.addView(row);
    } while (next);
    entry.close();
    people.`enter code here`close();
}

我在获取以*开头的数字时遇到问题 我认为问题在于Integer.parseInt(number);行 当我试图采取尝试并赶上时我得到一个错误 那么如何在没有例外的情况下获得所有数字 谢谢。

3 个答案:

答案 0 :(得分:4)

Integer.parseInt()需要数字的字符串表示。 * 的字符串不是数字 正如DavidFletcher所说,删除所有不需要的字符(包括+或空格)以使字符串成为干净的数字

答案 1 :(得分:1)

你需要保留*吗?如果没有,你不能用“”替换*“

答案 2 :(得分:0)

Integer.parseInt(str)期望str是一个整数。

如果您使用EditBox作为应用程序中的输入源,则可以将此属性添加到xml中,它只允许使用数字字符作为输入:     机器人:的inputType = “数量”

否则,您可以通过执行Integer.parseInt(str.replace(“*”,“”))删除*字符。

请注意,您也可以使用“numberDecimal”表示十进制数字。