2017-03-27 1 views
-1

filterConditions est {ID> = 3, montant < 400}java.util.concurrent.ExecutionException: java.lang.NumberFormatException: Pour la chaîne d'entrée: "= 3" dans mongodb java?

String[] fCondition = filterConditions.split(","); 
     if(fCondition[i].contains(">=")){ 
      int indx1= fCondition[i].indexOf("="); 
      int indx2= fCondition[i].indexOf("="); 
      String f1 = fCondition[i].substring(0, indx1); 
      String f2 = fCondition[i].substring(indx2); 
      fieldList.add(Filters.gte(f1, Integer.valueOf(f2))); 
      continue; 
     } 
+0

Afficher la valeur du filtre et le document d'exemple. – notionquest

+0

La valeur filterConditions est "ID> = 3, amount> 300" @notionquest – svm

+0

Lorsque vous obtenez la valeur de sous-chaîne pour f2, utilisez indx2 + 1. Cela ne devrait vous donner que 3 sans égalto. – notionquest

Répondre

0

Modifier l'affectation f2-indx2+1 pour obtenir la valeur 3. Actuellement, la sous-chaîne obtient la valeur "= 3".

String f2 = fCondition[i].substring(indx2+1); 

Index de: -

comte commence à partir de 1.

Renvoie l'index dans cette chaîne de la première occurrence du caractère spécifié . Si un caractère de valeur ch apparaît dans la séquence de caractères représentée par cet objet String, l'index (en unités de code Unicode) de la première occurrence est renvoyé.

Le dessous indexOf retours 4.

int indx2= fCondition[i].indexOf("="); 

Substring commence à 0. Lorsque vous obtenez 4 pour la sous-chaîne, il obtient la valeur de =. Donc, il doit être changé en index+1.

int indx2= fCondition[i].indexOf("=");