2014-09-02 5 views
-1

Я получил под исключение при попытке получить число из колонки количества грамматического разбора - NumberFormatException: Invalid INTNumberFormatException: Invalid INT - Строка

Я хочу, чтобы получить номер, а затем отобразить число в TextView. Я смог добиться этого со строками, но с трудом сталкивался с числами.

Ниже LogCat сообщение:

09-02 10:00:27.881: E/AndroidRuntime(1267): FATAL EXCEPTION: main 
09-02 10:00:27.881: E/AndroidRuntime(1267): Process: com.dooba.beta, PID: 1267 
09-02 10:00:27.881: E/AndroidRuntime(1267): java.lang.NumberFormatException: Invalid int: "UserAge" 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.Integer.invalidInt(Integer.java:137) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.Integer.parse(Integer.java:374) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.Integer.parseInt(Integer.java:365) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.Integer.parseInt(Integer.java:331) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.dooba.beta.Fragment1$6.done(Fragment1.java:371) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.parse.FindCallback.internalDone(FindCallback.java:45) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.parse.FindCallback.internalDone(FindCallback.java:31) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.parse.Parse$5$1.run(Parse.java:891) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at android.os.Handler.handleCallback(Handler.java:733) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at android.os.Looper.loop(Looper.java:136) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at java.lang.reflect.Method.invoke(Method.java:515) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
09-02 10:00:27.881: E/AndroidRuntime(1267):  at dalvik.system.NativeStart.main(Native Method) 

Ниже приведен код

query5.findInBackground(new FindCallback<ParseUser>() { 

       @Override 
       public void done(List<ParseUser> objects,ParseException e) { 

        for(int i=0;i<objects.size();i++){ 
         // Do whatever you need to extract object from "users" 
         ParseQuery<ParseObject> query = ParseQuery.getQuery("User"); 
         query.whereNotEqualTo("objectId", ParseUser.getCurrentUser() 
           .getObjectId()); 
         // users with Gender = currentUser.Looking_Gender 
         query.whereEqualTo("Gender", userLookingGender); 
         // users with Looking_Gender = currentUser.Gender 
         query.whereEqualTo("Looking_Gender", userGender); 
         query.setLimit(1); 
         query.whereEqualTo("ActivityName", activityName); 
         query.whereGreaterThanOrEqualTo("UserAge", minimumAge); 
         query.whereLessThanOrEqualTo("UserAge", maximumAge); 

         mUserAgeRetrieved = (TextView) getActivity().findViewById(R.id.userlistage); 

         String str = "UserAge"; 
         int iage = Integer.parseInt(str); 
         mUserAgeRetrieved.setText(iage); 



        } 
     }//for loop 
       }); 

Для сравнения, ниже, как я получить строку:

mUserNameRetrieved.setText(objects.get(i).get("Name").toString()); 

"UserAge" относится к номер столбца в синтаксисе, который я вызываю, чтобы получить номер в нем.

Заранее благодарен

+0

'Строка ул = "UserAge"; INT МАГП = Integer.parseInt (НТР),' '== INT МАГП = Integer.parseInt («UserAge»); '==' NumberFormatException', поскольку '' UserAge '' не является числом! это не наука о ракетах ... – Selvin

ответ

2

В чем смысл этого?

String str = "UserAge"; 
int iage = Integer.parseInt(str); 
mUserAgeRetrieved.setText(iage); 

Очевидно, что бросает NumberFormatException, потому что "UserAge" не является числом! Здесь вы не получаете никакого номера из своего ParseQuery.

Редактировать: Использовать mUserAgeRetrieved.setText (String.valueOf (objects.get (i) .getInt («UserAge»))) для извлечения номера.

+0

Я чувствовал, что делаю что-то неправильно, потому что этот код неправильно извлекает число. UserAge представляет столбец UserAge. Я знаю, что это не число, но этот столбец содержит в нем цифры. – John

+1

Вы можете просто сделать это так же, как вы извлекаете строки, и вызывать Integer.parseInt() в этой строке. – 0101100101

+0

ладно спасибо. Это то, над чем я работал до сих пор mUserAgeRetrieved.setText (objects.get (i) .get (Integer.parseInt («UserAge»)). ToString()); , но я не могу этого сделать, потому что get ищет строку – John

1

вы должны изменить эту строку:

String str = "UserAge"; 

к

String str = mUserAgeRetrieved.getText(); 
+0

Спасибо за ваш быстрый ответ, но как же я могу обратиться к столбцу UserAge? – John

Смежные вопросы