Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1297 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Concatenation de caractères

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Concatenation de caractères

n°2267480
hypermc
Posté le 10-10-2015 à 09:22:49  profilanswer
 

Bonjour,
 
J'ai encore un autre problème  :pfff:  
 
Dans mon petit jeu, j'ai différents sprites (Imageview), que j'ai appellé : obd1, obd2, obd3, obd4, obd5
pour les faire évoluer à l'écran, j'ai besoin de concatener les "obd" avec une variable i un entier, que je peux faire évoluer dans une boucle for (avec i allant de 1 à 5). Au final j'obtiendrai une image que je déclarerai comme suit :
 
image = (ImageView) findViewById(R.id."obd"+i);
 
dans ce cas, le (R.id."obd"+i) ne fonctionne pas.
 
Comment faire pour mes déclarations ?
 
Merci d'avance pour votre aide
 
 :jap:

mood
Publicité
Posté le 10-10-2015 à 09:22:49  profilanswer
 

n°2267525
hypermc
Posté le 10-10-2015 à 23:27:27  profilanswer
 

Bonsoir,
 
Pour préciser, voici un bout de code, j'ai le obg qui se met en rouge avec une erreur (Cannot resolve symbol 'obg')
 
    protected void managerOfOeufs(){
         
        ImageView image;
        String obg[]={"obg1","obg2","obg3","obg4","obg5"};
        for ( int i=1;i<=5; i++){
             
            image=(ImageView) findViewById(R.id.obg[i]);
            image.setVisibility(View.VISIBLE);
        }
           
    }
 
Avec mes différents sprites obg1 à 5 qui sont définis comme suit :
obg1 = (ImageView) findViewById(R.id.obg1);
...
Grrr... Ca m'énerve quand ça marche pas.
 
Merci d'avance pour votre aide

n°2267542
leonhard
Posté le 11-10-2015 à 09:37:41  profilanswer
 

hypermc a écrit :

Bonsoir,
 
Pour préciser, voici un bout de code, j'ai le obg qui se met en rouge avec une erreur (Cannot resolve symbol 'obg')
 
    protected void managerOfOeufs(){
         
        ImageView image;
        String obg[]={"obg1","obg2","obg3","obg4","obg5"};
        for ( int i=1;i<=5; i++){
             
            image=(ImageView) findViewById(R.id.obg[i]);
            image.setVisibility(View.VISIBLE);
        }
           
    }
 
Avec mes différents sprites obg1 à 5 qui sont définis comme suit :
obg1 = (ImageView) findViewById(R.id.obg1);
...
Grrr... Ca m'énerve quand ça marche pas.
 
Merci d'avance pour votre aide


 
J'ai pas fait beaucoup de programmation Android, mais pourquoi ne pas définir le tableau obg comme un tableau d'ImageView ? et ensuite construire
 

Code :
  1. obg[0] = (ImageView) findViewById(R.id.obg1);
  2. obg[1] = (ImageView) findViewById(R.id.obg2);
  3. ...


 
En Java on ne peut pas (facilement) construire le nom d'une variable au moment de l'exécution. Ou alors il faut passer par l'instropection ("reflection" en anglais) mais ça peut être très casse-gueule pour quelqu'un qui ne maîtrise pas les subtilités du langage et de la JVM.  

n°2267567
hypermc
Posté le 11-10-2015 à 23:38:24  profilanswer
 

Bonsoir leonhard,
 
Merci de ta réponse, en effet ça me plait bien, mais comment déclarerai tu ce tableau d'image ?
 
J'ai essayé  
ImageView [] obg = new ImageView[5];
 
Puis les inititialisations comme suit
obg[1] = (ImageView) findViewById(R.id.obg1);
obg[2] = (ImageView) findViewById(R.id.obg2);
etc, jusqu'à 5
 
puis des appels classiques
obg[i].setVisibility(View.VISIBLE);      (avec i déclaré entier)
 
Cela se compile bien, je n'ai pas d'erreur sur le code, mais à l'exécution, j'ai une erreur dès le départ "l'application s'est malheureusement arrêtée"...
 
C'est pas vrai, mais c'est pas vrai...  :(  
 
Merci encore pour ta bonne idée.  :jap:  
 

n°2267573
leonhard
Posté le 12-10-2015 à 06:11:35  profilanswer
 

hypermc a écrit :

Bonsoir leonhard,
 
Merci de ta réponse, en effet ça me plait bien, mais comment déclarerai tu ce tableau d'image ?
 
J'ai essayé  
ImageView [] obg = new ImageView[5];
 
Puis les inititialisations comme suit
obg[1] = (ImageView) findViewById(R.id.obg1);
obg[2] = (ImageView) findViewById(R.id.obg2);
etc, jusqu'à 5
 
puis des appels classiques
obg[i].setVisibility(View.VISIBLE);      (avec i déclaré entier)
 
Cela se compile bien, je n'ai pas d'erreur sur le code, mais à l'exécution, j'ai une erreur dès le départ "l'application s'est malheureusement arrêtée"...
 
C'est pas vrai, mais c'est pas vrai...  :(  
 
Merci encore pour ta bonne idée.  :jap:  
 


 
En java les éléments d'un tableau de n éléments sont numérotés de 0 à n-1. Donc si tu déclare un tableau
comme  

Code :
  1. ImageView [] obg = new ImageView[5];


 
tu ne peux pas accéder au 6ème élément (celui avec l'indice 5). Soit tu écris comme dans mon example en commençant à 0, soit tu déclare un tableau de 6 éléments et tu "ignores" le premier, c'est-à-dire l'élément d'indice 0.  
 
 

n°2267620
hypermc
Posté le 12-10-2015 à 22:16:43  profilanswer
 

Merci beaucoup Leonhard, ça marche :bounce:  
 
Tu sais quoi ... Faut que je te bise :D *
 
:hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Concatenation de caractères

 

Sujets relatifs
Concaténer deux chaines de caractèresla concatenation des objets (la fussion)
Pattern qui exclut les caractères avant un pointConcatenation de chaines d caracteres avec balise php
Concaténation des caractères non signésconcaténation de chaines de caractères !!!
Langage C : concaténation de chaines de caractèresconcaténation chaine de caractères
Concatenation de chaines de caracteres[Vb] concaténation de chaines de caractères
Plus de sujets relatifs à : Concatenation de caractères


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR