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

avec Java Discussion :

String et String[]


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut String et String[]
    Débutant en Java, j'essaye tant que bien que mal de m'éxercer avec des petits exercices. Malheureusement certaines choses doivent m'échapper encore.

    Dans ma classe Main, je retrouve ma méthode main qui demande à l'utilisateur de saisir le nom du tableau qu'il souhaite parcourir afin d'afficher toutes les valeurs. Il existe 2 tableaux de String: tableaux1[] et tableau2[] .
    Une fois le nom du tableau saisis, la méthode main appelle une méthode parcourir se trouvant dans ma classe Main et lui envois en paramètre le nom du tableau saisis.
    Sauf que Eclipse m´indique qu'il y a une erreur car j'envoie en argument un String et ma méthode veut un String[].

    Mais je sais pas vraiment comment résoudre ce problème. Si vous pouviez m'aider à résoudre ce problème et surtout me fournir des explications simples, ça serait cool.

    Voici le 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    import java.util.Scanner;
     
     
    public class main {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
     
    		String tableau1[] = {"papa","popo","pipi","pupu","pepe"} , tableau2[] = {"mama","momo","mimi","mumu","meme"};
     
     
    		System.out.println("Choisissez un tableau:");
    		Scanner choixTableau = new Scanner(System.in);
    		String tableauChoisis = choixTableau.nextLine();
     
    		parcourir(tableauChoisis);
     
    	}
     
    	public static void parcourir (String[] saisieTableau){
     
    		for (int i=0; i<saisieTableau.length; i++)
    		{
    			System.out.println("Position : " + i + " Valeur : " + saisieTableau[i]);
    		}
    	}
     
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut String et String[]
    Bonjour,

    Tout d'abord:
    Pas de nom de classe main (main est un mot réservé).

    Ensuite par convention les noms de classe devraient commencer par une majuscule. À LA RIGUEUR Main, mais pourquoi pas un nom plus explicite comme par exemple ParcoursTableaux.

    Supposons que nous conservons ton choix:

    Une classe (ParcoursTableaux) et deux methodes (main(String[] args)) et (parcourir()).

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public class ParcoursTableau {
    //déclarons ici toutes les données dont nous aurons besoins soit dans main, 
    //soit dans parcourir, elles y serons accessibles
    ........
    .........
    ........
    public static void main(String[] args) {
    System.out.println("Choisissez un tableau:");
    		Scanner choixTableau = new Scanner(System.in);
    		String tableauChoisis = choixTableau.nextLine();
    /*
     *ici il faudrait contrôler le nom de tableau entré
     *et comme la question qui se pose c'est comment parcourir le tableau dont 
     *le nom est entré et qui ne devrait être que tableau1 ou tableau2
     *profitons de ce contrôle pour "cloner" soit tableau1[] soit tableau2[]
     *dans un 3eme tableau tableau[] et c'est ce dernier qui sera parcouru
     *dans... parcourir()
    */
    ...........
    ..........
    ..........
    parcourir();
    }
     
    public static void parcourir (){
     
             for (int i=0; i<longueur; i++)
             {
     
                System.out.println("Position : " + i + " Valeur : " + tableau[i]);
     
             }
    ........
    ........
    }
    }
    Voilà ce que l'on peut faire :
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    import java.util.Scanner;
     
     
        public class ParcoursTableaux {
     
       /**
        * @param args
        */
          static String tableau1[] = {"papa","popo","pipi","pupu","pepe"};
          static int longueur = tableau1.length;
    // ici j'ai ajouté un élément por que les 2 tableaux n'aient pas la même longueur
          static String tableau2[] = {"mama","mamy","momo","mimi","mumu","meme"};
          static int longueur2 = tableau2.length;
          static String tableau[];
          static String tableauChoisis = "";
     
           public static void parcourir ()
          {
             System.out.println("tableauChoisi = " + tableauChoisis);
     
     
             for (int i=0; i<longueur; i++)
             {
     
                System.out.println("Position : " + i + " Valeur : " + tableau[i]);
     
             }
          }
     
           public static void main(String[] args)
          {
             boolean encore = true;
             do
             {
                System.out.println("Choisissez un tableau:");
                Scanner choixTableau = new Scanner(System.in);
                tableauChoisis = choixTableau.nextLine();
     
                if (tableauChoisis.equals("tableau1"))
                {
                   encore = false; 
                   tableau = (String[])tableau1.clone();
                }
                else
                   if (tableauChoisis.equals("tableau2"))
                   {
                      encore = false;
                      longueur = longueur2; 
                      tableau = (String[])tableau2.clone();
                   }
                   else
                   {
                      javax.swing.JOptionPane.showMessageDialog(null,"Nous attendions\n"
                         + "soit tableau1,\n" 
                         + "soit tableau2.\n"
                         + "Mais nous trouvons :\n"
                         + tableauChoisis + " !!!");
                   }
             }
             	while (encore);
     
     
             parcourir();
     
          }
       }
    Ce n'est certainement pas la seule solution ni la meilleure!
    Par exemple mettre tout dans main() sans methode parcourir()

    Cordialement,

    Dan

    Edit : on pouvait tout mettre dans main(), sans la methode parcourir()

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Désolé d'infirmer, mais main n'est pas un mot réservé en java. Et donc, on peut appeler sa classe main (même si Main est préférable).

    En outre, appeler sa classe d'appel Main (qui instancie un MonProjet après validation des paramètres, bien sûr) dans un projet de grande envergure permet de la retrouver bien plus facilement. Enfin, question de conventions...

    Pour le problème à proprement parler, comme danimo ne l'a pas expliqué, tu as des variables nommées (tableau1 et tableau2), mais pour java, ce sont des objets comme des autres. Rien ne lie l'objet du tableau à une quelconque chaîne "tableau1" ou "tableau2" (à part de la réflexion, mais nous n'en sommes pas vraiment là).

    Donc, tu tentes d'accéder à un nom de variable à partir d'une chaîne. Disons que pour le moment, c'est pas possible. Il faut dès lors associer un objet à l'objet tableau. Pour ce faire, il te faut tester la valeur reçue en entrée via le Scanner. D'où ce que Danimo a fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (tableauChoisi.equals("tableau1")) {
      ...
    } else if (tableauChoisi.equals("tableau2")) {
      ...
    } else {
     
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Bonjour,

    C'est tout à fait vrai et c'est moi qui devrais être désolé d'avoir sorti une telle ânerie de mot réservé...

    Cordialement,

    Dan

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Pas de souci, ça peut arriver à tout le monde.

    D'ailleurs, en me relisant, j'ai vu que mon vocabulaire était quelque peu tourné contre toi. Je n'en pense rien et voulais simplement compléter l'information que tu as donnée.

  6. #6
    Membre régulier
    Homme Profil pro
    Nom
    Inscrit en
    Juin 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Nom

    Informations forums :
    Inscription : Juin 2006
    Messages : 90
    Points : 89
    Points
    89
    Par défaut une reponse
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    import java.util.Scanner;
    import java.util.HashMap;
    import java.util.Map;
     
    public class Designs {
     
        public static void main(String[] args) {
            display(arrays().get(userChoice()));
     
        }
     
        private static String userChoice() {
            String choix = "";
            while (!(choix.matches("1") || choix.matches("2"))) {
                System.out.print("Tableau = 1, Tableau = 2 ... Votre choix: ");
                choix = new Scanner(System.in).nextLine();
            }
            return choix;
        }
     
        private static Map<String, String[]> arrays() {
            return new HashMap<String, String[]>() {
                {
                    put("1", new String[]{"papa", "popo", "pipi", "pupu", "pepe"});
                    put("2", new String[]{"mama", "momo", "mimi", "mumu", "meme"});
                }
            };
        }
     
        public static void display(String[] array) {
            for (int i = 0; i < array.length; i++) {
                System.out.println(i +" -> "+ array[i]);
     
            }
        }
     
     
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 15h56
  2. Comparaison d'une liste de string à un string
    Par maxazac dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 19/10/2005, 15h39
  3. [string] [float] string to float en sql
    Par chickenhuchette dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 17/06/2005, 11h47
  4. [String] pb fonction String[] split(String regex)
    Par Kyti dans le forum Langage
    Réponses: 6
    Dernier message: 05/04/2005, 13h06
  5. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35

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