lang.NumberFormatException в Android - PullRequest
       0

lang.NumberFormatException в Android

2 голосов
/ 01 июня 2011

У меня есть следующий код, который ничего не делает, кроме чтения некоторых значений из БД в фоновом потоке и использования значений, которые я рисую Линейную диаграмму, используя банку. Для линейной диаграммы я использую значение для каждого массива, и проблема заключается в что третье, что я передаю конструктору, который рисует LineChart, это float ....


float[] viteza;

String[] time;

int contor=0;

public void onResume() {

    super.onResume();

    init_task = new InitTask();

    init_task.execute(db);

}

public class InitTask extends AsyncTask<DBAdapter,String, Void> {

    String TABLE_3;

    protected Void doInBackground(DBAdapter... db) {
        try {
            db[0].createDatabase();
            db[0].openDataBase();
            Cursor c = db[0].getCursor3(db[0].TABLE_3, user_id);

            String[] array=new String[2];
            viteza = new float[c.getCount()];
            time = new String[c.getCount()];

            if (c.moveToFirst()) {

                do {


                    publishProgress(c.getString(3),c.getString(4));
                    Thread.sleep(500);


                } while (c.moveToNext());

            }
            c.close();
            db[0].close();

        } catch (Exception e) {
            Log.d("Eroare", "doInBackground", e);
        }

        return null;
    }

    protected void onProgressUpdate(String...values) {

        Aitem items[] = new Aitem[1];

        viteza[contor]=Float.valueOf(values[0]);
        time[contor]=values[1];
        if(contor>3)
        {
        items[0]=new Aitem(Color.RED, "Evolution",viteza);
        lv.setTitle("Evolutia vitezei");

        lv.setAxisValueX(time);

        setContentView(lv);
        }
        contor++;
    }

}



}

Я получаю сообщение об ошибке в этой строке:

viteza[contor]=Float.valueOf(values[0]);


java.lang.NumberFormatException: 
   at org.apache.harmony.luni.util.FloatingPointParser.parseFltImpl(Native Method)
 at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:321)

Кто-нибудь знает, что не так?

EDIT:

По моему скромному мнению, значения [0] = c.getString (3) и значения [1] = c.getString (4), так что ... являются строками ... не так ли?

Ответы [ 3 ]

1 голос
/ 02 июня 2011

Я не уверен, просто посмотрев на это, но я могу сказать вам, что именно здесь Log.v чрезвычайно удобен. Поставьте Log.v (TAG, "\" "+ values ​​[] +" \ ""), и вы точно увидите, что происходит с этой функцией. Если это что-то отличное от чистого числа, это и будет причиной возникновения исключения.

0 голосов
/ 14 февраля 2013

Используйте try catch блок, где вы анализируете строку в int

try{
// todo

}

catch( NumberFormatException ex ) {

}
0 голосов
/ 02 июня 2011

Очевидно, что первый элемент не является правильной строкой, содержащей float.

Так что очевидно, что содержимое c.getString (3) должно быть неправильным. Убедитесь, что это строка и что эта строка содержит только число с плавающей точкой. Проверьте наличие недопустимых символов, пробелов и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...