Si vous avez vraiment besoin de variables dont les noms ne sont pas connus au moment de la compilation, vous pouvez obtenir cet effet en créant une structure qui contient des noms et des valeurs arbitraires. Comme, vous pouvez créer un HashMap où la clé est le nom. Ensuite, votre exemple ci-dessus devient quelque chose comme:
HashMap myData=new HashMap();
for (int i=0;i<2;++i)
{
myData.put("hallo"+i,Integer.toString(i));
}
plus tard Vous les tirez avec:
String whatever=myData.get("hallo1");
etc.
Bien sûr, vous ne pouvez pas accéder aux valeurs de la carte en tant que variables directement, vous devez toujours mettre et mettre à jour et les récupérer, mais le concept est le même. Cela dit, je serais très prudent à ce sujet, car cela rend le code difficile à maintenir. Si les noms dont vous avez besoin sont vraiment à l'improviste - si vous écrivez du code générique pour lire une table de base de données arbitraire dont le nom a été tapé par l'utilisateur à l'exécution ou quelque chose comme ça - cool. Mais si vous pensez que cela est un raccourci pratique pour quelque chose comme:
if (region.equals("1"))
region1Total+=amount;
else
region2Total+=amount;
Ma réponse simple serait NE PAS !! Le code est beaucoup plus facile à maintenir si vous utilisez l'instruction IF et les variables normales. Alors quiconque lisant le code peut regarder vos déclarations et voir quelles sont toutes les variables possibles. Vous pouvez faire des recherches de texte pour trouver partout où ils sont utilisés. Si vous mal orthographiez un nom de variable, au lieu de créer une nouvelle variable par magie, vous obtiendrez un message d'erreur propre à la compilation. Etc.
D'autre part, si vous pouvez écrire quelque chose comme
String n=getInputFromScreen();
String s=getAnotherInputFromScreen();
hallo & n = s;
vous auriez aucune idée de ce que les variables existent dans votre programme et aucun moyen de suivre où ils sont utilisés.
Désolé l'exemple ne le rend pas plus claire – Mark
Ceci est une demande commune des débutants. Habituellement, la solution correcte consiste à utiliser un tableau, une liste, un ensemble ou une carte. –
Je ne veux pas faire un String-Array. La chaîne n'est qu'un exemple. J'ai un GridLayout (3,3) et dans chaque champ un GridLayout (3,3) à nouveau. maintenant je veux faire les 81 étiquettes comme: field_A1_A1, field_A1_A2 ... etc ... Peut-être que maintenant vous comprenez mon problème. – rakete