Je reçois des données en tant que réponse JSON d'un serveur. J'extrise les données dont j'ai besoin et je veux mettre ces données dans une matrice de chaîne. Je ne connais pas la taille des données, je ne peux donc pas déclarer la matrice en tant que statique. Je déclare un tableau de chaînes dynamique: après cela, j'insère les données de la matrice: p> mais je reçois le p > java.lang.ArrayIndexOutOfBoundsException
Caused by: java.lang.ArrayIndexOutOfBoundsException
3 Réponses :
Essayez comme ça
String stringArray[]; stringArray=new String[jArray.length()]; String xCoords[]=new String[jArray.length()];; for (int i=0; i<jArray.length(); i++) { JSONObject json_data = jArray.getJSONObject(i); xCoords[i] = json_data.getString("xCoord"); }
Cela fonctionne lors de l'insertion, mais lorsque j'essaie d'extraire les données de celui-ci avec pour (int i = 0; i
08-04 11: 40: 30.435: Error / AndroidRuntime (1098): java.lang.nullpointereException code>. Comment puis-je extraire les données?
Vérifier la valeur sur XCOORDS [i] .print un journal pour voir la valeur.is il y a un problème de longueur ou tout simplement parce que XCOORDS [i] n'est pas double valeur?
Le problème est avec la longueur - si je modifie les paramètres du pour {} code> sur
pour (int i = 0; i <10; i ++) code> L'erreur se déplace vers le Ligne suivante -
Double XCOORD = DOUBLE.PARSEDOUBLE (XCOORDS [I]); CODE>
Ensuite, vous avez un problème de longueur et aussi à XcoOords [i], ce n'est pas toujours double
Utiliser ArrayList Bien que ce ne soit pas vraiment nécessaire, mais juste apprenez-le strong>:
J'ai essayé avec cela aussi, mais si je tape seulement string [] xcoords = xcoordslist.toarray (); code> il me donne un
type inadaptation: impossible de convertir de l'objet [] à la chaîne [] / Code>, donc je fais la ligne à
String [] XCOORDS = (chaîne []) XCOORDSLIST.TOARRAY (); code> Mais cela montre ensuite un
08-04 11: 54: 24.462: ERROR / ANDROIDRONTIME (1173): Causé par: Java.Lang.classcastException: [ljava.lang.Object; code> erreur.
Désolé, j'ai édité la réponse .. Ajouter simplement une chaîne moulée à la dernière déclaration (chaîne []) code>
C'était mon point - même avec la version éditée, l'application s'arrête (vous devez forcer la fermeture) et le logcat affiche un java.lang.classcastException: [ljava.lang.object; code>
par: java.lang.classcastException: [ljava.lang.Object; code>
Êtes-vous sûr de ne pas utiliser ngarraylist.add (json_data); code> ?? Vous devez utiliser
ngarraylist.add (JSON_DATA.GETSTRING ("XCOORD")); CODE> Je ne pense pas que vous utilisiez mon code
Oui, bien sûr, voici mon code: ArrayList
Changer chaîne [] xcoords = {}; code> à
string [] xcoords; code>
S'il vous plaît éditer votre question .. Cela devient gênant ici .. Mettez tout votre code là-haut et dites-moi quand vous le faites
Cela a résolu l'erreur: xcoords = xcoordsarraylist.toarray (nouvelle chaîne [XCOORDSARRAYLIST.SIZE ()]); code>
La matrice de cordes en Java a une taille définie qui devrait être donnée pendant la déclaration, vous ne pouvez pas la modifier ultérieurement en ajoutant ou en supprimant des éléments et le concept pur de la matrice dynamique ne se ferme pas en Java. Lire l'article détaillé ici ...
p> ArrayList<String> fruits = new ArrayList<String>();
fruits.add("Value 1");
fruits.add("Value 2");
fruits.add("Value 3");
fruits.add("Value 4");
fruits.add("Value 5");
fruits.add("Value 6");
fruits.add("Value 7");
// add as much values as per requirement
// you can also use loops to add multiple values