2010-11-10 6 views
0

Dans mon code, j'ai une assez grosse boucle et j'ai besoin de créer une nouvelle variable à la fin de chaque itération (entiers). Est-ce possible? J'ai lu à propos d'une classe ScriptEngineManager, mais je ne suis pas sûr si cela sera en mesure d'aider. Je suppose que je pourrais créer un groupe d'entiers égal à 0, mais je ne sais pas exactement combien de fois je vais devoir créer une nouvelle variable (cela dépend des conditions de la boucle). J'espère que cela a du sens.Création de variables à l'exécution en Java

+1

Question dit Java, Javascript tag dit, la question corps embrouille tout. Est-ce Java ou Javascript? Ce sont deux choses différentes (** complètement ** différentes) que vous connaissez. Que voulez-vous dire par "créer des variables"? – Pointy

+0

Peut-être qu'il utilise JavaScript via l'API 'ScriptEngine'. Pourtant, la question est très vague. Nous devons voir le code pertinent. –

+0

Désolé pour la confusion. Je crois que je voulais dire Java ... Je ne suis pas sûr des différences vraiment. N'est-ce pas un pour les applets Web ou quelque chose? – Deho

Répondre

3

Utilisez un tableau. En Javascript, placez var results = [] avant votre boucle et ajoutez les résultats en utilisant results.push(value). En Java, vous devez utiliser un ArrayList. (Ce sont des langues très différentes, en passant.)

+0

Je pense que je suis en train de coder en Java. Je ne peux pas croire ce qu'est une erreur d'amateur .. pour ne pas savoir quelle langue j'utilise. Pardon. Le 'var results = []' ne me semble pas familier. Merci – Deho

+0

@Descartes - La réponse de Matthew est toujours valide.Si vous avez besoin de stocker un nombre variable de valeurs, utilisez une collection, par exemple 'ArrayList' ou' HashMap'. – Jeremy

0

Espérons que cela a du sens.

Malheureusement, ce n'est pas le cas.

En Java, cela n'a aucun sens de créer des variables à la volée. C'est extrêmement difficile à faire, et une fois que vous l'avez fait, ils sont extrêmement difficiles à utiliser. (En revanche, il est facile à faire en Javascript ...)

Cependant, cela signifie simplement que vous devez faire ce que vous essayez d'une manière différente. Par exemple, ce qui suit fait un calcul dans une boucle et enregistre les résultats dans une variable (existante) ArrayList:

List<Integer> results = ArrayList<Integer>(); 
    while (...) { 
     // Do computation ... 
     int result = ... 
     results.add(result); 
    } 
    // Now we have all of the results in 'results' 

Ou, si vous voulez lier chacun des résultats à un nom distinct, vous pourriez faire Quelque chose comme ceci:

Map<String, Integer> results = HashMap<String, Integer>(); 
    while (...) { 
     // Do computation ... 
     String name = ... 
     int result = ... 
     results.put(name, result); 
    } 
0

Voici la façon dont j'ai mis en œuvre et m'a aidé à résoudre ma solution facilement sans trop d'obstacles.

// Création de la liste de tableau

List accountList = new ArrayList(); 




for(int k=0;k < counter;k++){ 
     accountList.add(k, (String)flowCtx.getValueAt("transitId"+m)); 
} 

Itère la boucle et en ajoutant les objets dans le arraylist avec l'index.

// Récupération de l'objet au moment de l'exécution avec l'aide de l'indice

String a = accountList.get(i)); 
+0

Qu'est-ce que "flowCtx" ici? – Yatin