IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Tableau de caractère variable


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Tableau de caractère variable
    Bien le bonjour,
    voilà, j'ai écris ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    		String queryx[][] = new String[5][1];
    		int i = 0;
    		queryx[i][0] = "test0";
    		if(!Utils.isEmpty(filterEvtStatus)) {
    			queryx[++i][0] = "test1";		
    		}
    		if(!Utils.isEmpty(filterLocSitID)) {
    			queryx[++i][0] = "test2";		
    		}
    		if(!Utils.isEmpty(filterLocSuiviParActID)) {
    			queryx[++i][0] = "test3";		
    		}
    		if(!Utils.isEmpty(filterPl_ID)) {
    			queryx[++i][0] = "test4";		
    		}
    		String query[][] = new String[++i][1];
    		i = 0;
    		for(String[] temp:queryx){
    			if(temp[0] != null){
    				query[i] = temp;
    				++i;
    			}
    		}
    Qui comme vous pouvez le voir est vraiment moche.
    Comment pourrais je faire pour n'avoir que les données conditionnées dans mon tableau de départ sans passer par un petit for pour éliminer les valeurs null?
    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pour info je passe la variable query dans une fonction qui attend du String[][].

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Désolé mais je n'ai pas compris ce que tu souhaite au final, peux tu donner un peu exemple STP.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String queryx[][] = new String[5][1];
    =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Plus joli
    String queryx[] = new String[5];
    N'aide pas du tout à la compréhension du code :/
    C'est quoi ça ?

    A moins d'utiliser une liste tu sera toujours obligé de faire 2 parcours :
    Le premier récupère le nombre de valeur (16 par exemple)
    Le deuxième les stock dans un tableau de 16

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Tu peux aussi crée une liste que tu remplie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    List<String> mylist = new ArrayList<String>();
    if(!Utils.isEmpty(filterEvtStatus)) {
    	mylist.add("test1");		
    }
    if(!Utils.isEmpty(filterLocSitID)) {
    	mylist.add("test2");		
    }
    if(!Utils.isEmpty(filterLocSuiviParActID)) {
    	mylist.add("test3");	
    }
    if(!Utils.isEmpty(filterPl_ID)) {
    	mylist.add("test4");		
    }
    String queryx[][] = new String[5][1];
    queryx[0]=mylist.toArray();
    Note : c'est une idée, je ne garantie pas la compilation de ce code.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par kolodz Voir le message
    Tu peux aussi crée une liste que tu remplie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    List<String> mylist = new ArrayList<String>();
    if(!Utils.isEmpty(filterEvtStatus)) {
    	mylist.add("test1");		
    }
    if(!Utils.isEmpty(filterLocSitID)) {
    	mylist.add("test2");		
    }
    if(!Utils.isEmpty(filterLocSuiviParActID)) {
    	mylist.add("test3");	
    }
    if(!Utils.isEmpty(filterPl_ID)) {
    	mylist.add("test4");		
    }
    String queryx[][] = new String[5][1];
    queryx[0]=mylist.toArray();
    Note : c'est une idée, je ne garantie pas la compilation de ce code.

    Cordialement,
    Patrick Kolodziejczyk.
    Intéressant, mais le ArrayList<String>.toArray() me renvoi un tableau d'objet donc cast impossible Object[]->String[].

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Faux, des if sur une ligne c'est incompréhensible par exemple, pas des pré incrémentation.
    Les placer directement dans un tableau ça rebute un peu. Mais chacun ses gout et ses couleurs, je respecte

    Pour info je passe la variable query dans une fonction qui attend du String[][].
    N'y a t'il pas moyen de modifier cette fonction mystère à notre avantage? Ou est ce une contrainte fixe?

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Alors utilise l'autre fonction toArray

    Voici un exemple simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<String> test =new ArrayList<String>();
    test.add("toto");
    String table[] =(String[]) test.toArray(new String[test.size()]) ;
    for (int i = 0; i < table.length; i++) {
    	System.out.println(table[i]);
    }
    Ce code compile !

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  8. #8
    Invité
    Invité(e)
    Par défaut
    En fait, j'ai légèrement modifié mon code depuis (problème de logique fonctionnelle) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    		String queryx[][] = new String[1][5];
    		int i = 0;
    		queryx[0][i] = "PvtEventID = 'truc1'" ;
    		if(filterEvtStatus.equals("youpi") {
    			queryx[0][++i] = "PvtStatus =  'truc2'");		
    		}
    		if(filterLocSitID.equals("youhou") {
    			queryx[0][++i] = "PvtPersonID:PerLocID:LocSitID_ =  'truc3'";		
    		}
    		if(filterLocSuiviParActID.equals("ici") {
    			queryx[0][++i] = "PvtPersonID:PerLocID:LocSuiviParActID_  = 'truc4'");		
    		}
    		if(filterPl_ID.equals("i'll be back") {
    			queryx[0][++i] = "PvtPl_ID_ = 'truc5'");		
    		}
    		String query[][] = new String[1][++i];
    		i = 0;
    		for(String temp:queryx[0]){
    			if(temp != null){
    				query[0][i] = temp;
    				++i;
    			}
    		}
    En gros, dans la variable queryx, je récupère toujours un tableau avec un tableau de 16 chaines de caractère.
    Mais certaine de ces chaines sont en fait nulle, donc je créer un autre tableau avec un tableau de i+1 String.
    Je ne connais la taille de mon tableau qu'après les condition.
    Je passerais bien par des listes, mais je suis limité par la signature de la méthode que j'utilise par la suite. A moins qu'il n'existe un moyen de transformer une liste de liste en tableau de tableau de chaine de caractère ?

    N'aide pas du tout à la compréhension du code :/
    Faux, des if sur une ligne c'est incompréhensible par exemple, pas des pré incrémentation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/06/2023, 15h51
  2. Réponses: 1
    Dernier message: 25/05/2007, 10h55
  3. Convertir une string en tableau de caractères
    Par alainpeniche dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 20h00
  4. Réponses: 17
    Dernier message: 17/11/2006, 11h00
  5. [TP] Tableau de taille variable
    Par Ripley dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 30/01/2006, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo