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 :

Multi tables de multiplications


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut Multi tables de multiplications
    Bonjour à toutes et tous.

    Je suis face à un petit problème que je n'arrive pas à résoudre.
    Je souhaiterais faire un petit programme de tables de multiplications, en intéraction directe avec l'utilisateur.
    Je n'ai pas encore regardé la fonction input afin de demander directement à l'utilisateur de rentrer la table qu'il souhaite donc je pense que je reposterais en cas de problème.
    Mon soucis étant actuellement que je n'arrive pas à rentrer plusieurs paramètres à ma classe.

    Voici le code actuel:

    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 MultiTable
    {
     
        public static void main(String[] args) 
        {
     
            if (args.length > 1)
            {
                String table = args[0];
                int valeurEntree = Integer.parseInt(args[1]);
                            for (int i = 1 ; i < 11 ; i++)
                            {
                                if (valeurEntree > 0)
                                {
                                    int valeurSortie;
     
                                    switch (table)
                                    {
     
                                        case "Table" :
                                            valeurSortie = valeurEntree * i;
                                            System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
                                            break;
                                    }
                                }
                            }
            }
                else {
                    System.out.println("Un seul paramètre est entré. Exemple : Table 6");
     
                }
     
        }
     
    }
    Le côté pas pratique que je vais sûrement retirer, c'est la partie switch qui me fait rajouter le paramètre "Table". Ceci était un test pour voir si je pouvais contourner mon soucis.
    Concrètement, il faudrait que je puisse rentrer : "java MultiTable 3 7 8" et qu'il m'affiche les trois tables à la suite.
    Actuellement il ne m'affiche que la première.
    J'ai cru comprendre que mon problème venait de ma boucle, et que lorsqu'il arrive à 10, il sort de la boucle et ne passe donc pas au deuxième paramètre.
    Mais je n'arrive pas à le forcer à passer au deuxième paramètre.

    Je suis preneur de toute idée afin de m'aider à avancer.

    Merci à vous.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Forcément, tu ne lis que le deuxième paramètre : int valeurEntree = Integer.parseInt(args[1]);...

    Il te faut simplement faire une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int i=1; i<args.length; i++) {
     
         int valeurEntree = Integer.parseInt(args[i]);
     
        // afficher la table correspondante...
     
    }
    Si tu comptes mettre un paramètre string devant (table, multiTable, ou je ne sais quoi), il serait préférable de le tester avant de faire cette boucle :

    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
     
    if ( args.length>1 ) {
     
        switch(args[0) {
        case 'table': // afficher les tables...
             if ( args.length==1 ) {
                 System.out.println("Aucune table indiquée...");
             }
             else {
                  for(int i=1; i<args.length; i++) {
                        // ... afficher la table de args[i]...
                  }    
             }
             break;
        case 'autre": // faire autre chose
             break;
        default:
            System.out.println("commande inconnue: "+args[0]);
        }
     
     
    }
    Idem pour if (valeurEntree > 0) : ne commence pas la boucle, au lieu de faire la boucle et de tester à chaque itération.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut
    J'y avais pensé à le tester comme ça, mais le code ne fait pas du tout ce que je veux, enfin il fait ce que je lui dis mais je lui dis pas ce qu'il faut surtout ^^
    J'avais 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
     
     
    public class MultiTable {
     
        public static void main(String[] args) 
        {
     
            if (args.length > 0){
                        for (int i=0; i<args.length; i++){
                            int valeurEntree = Integer.parseInt(args[i]);
                                System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
                        }
                }
     
            }
     
    }
    Mais ce code me retourne pas du tout ce qu'il faut, il me retourne le résultat du paramètre rentré multiplié par sa position dans l'appel du programme.
    Pour faire plus clair, si je rentre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java MultiTable 3 7 8 9 12 22
    Il me retourne comme réponse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    0 x 3 = 0
    1 x 7 = 7
    2 x 8 = 16
    3 x 9 = 27
    4 x 12 = 48
    5 x 22 = 110
    Or moi j'aurais voulu qu'il me retourne les tables complètes de 3 à 9.

    J'ai fait ce premier programme qui lui fonctionne très bien, mais dans lequelle il ne prends qu'un seul paramètre et ne passe pas au second

    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
     
     
    public class TableMultiplication2 {
     
        public static void main(String[] args) {
     
            if (args.length > 0){
                int valeurEntree = Integer.parseInt(args[0]);
                if (valeurEntree < 11){
                        for (int i=1; i<11; i++){
                                System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
                        }
                }
                else {
                    System.out.println("La valeur entrée n'est comprise entre 1 et 10");
     
                }
     
            }
     
        }
    }
    Si j'appelle le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    java TableMultiplication2 3
    Il me retourne bien ce que je veux, c'est à dire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    1 x 3 = 3
    2 x 3 = 6
    3 x 3 = 9
    4 x 3 = 12
    5 x 3 = 15
    6 x 3 = 18
    7 x 3 = 21
    8 x 3 = 24
    9 x 3 = 27
    10 x 3 = 30
    J'espérais qu'il me retourne deux tables en appelant le programme avec deux paramètres du style
    java TableMultiplication2 3 4 mais malheureusement ça aurait été trop simple. Je pense ne pas être bien loin de ce que je cherche à faire, mais à force de retourner le problème dans tous les sens, je me mélange les pinceaux.

    En tous cas, merci encore pour tes réponses.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oui, m'enfin, quand j'ai dit de faire une boucle sur les paramètres du programme, je n'ai pas dit d'enlever la boucle pour afficher une table... Il faut faire bien sûr un mix des deux programmes !

    Si tu peux afficher une table en écrivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
         int valeurEntree = Integer.parseInt(args[0]);
         if (valeurEntree < 11){
              for (int i=1; i<11; i++){
                   System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
              }
         }
         else {
                    System.out.println("La valeur entrée n'est comprise entre 1 et 10");
         }
    Tu peux bien écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(int j=0; j<args.length; j++) {
         int valeurEntree = Integer.parseInt(args[j]);
         if (valeurEntree < 11){
              for (int i=1; i<11; i++){
                   System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
              }
         }
         else {
                    System.out.println("La valeur entrée n'est comprise entre 1 et 10");
         }
    }
    Ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for(String arg : args) {
         int valeurEntree = Integer.parseInt(arg);
         if (valeurEntree < 11){
              for (int i=1; i<11; i++){
                   System.out.println(i + " x" + " " + valeurEntree + " " + "=" + " " +  valeurEntree * i);
              }
         }
         else {
                    System.out.println("La valeur entrée n'est comprise entre 1 et 10");
         }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut
    Intégrer une deuxième boucle for, bien sûr!! Bon j'aurais dû y penser, j'ai un peu de mal encore à interpréter le code, et encore moins à interpréter le deuxième code que tu as mis.
    J'ai vu que NetBeans me le corrigeait aussi automatiquement mais je n'arrive pas du tout à comprendre.
    En tous cas ça me donne bien le résultat attendu, je vais bûcher dessus pour comprendre avant de passer à l'exercice suivant, il faut que je comprenne ce que je fais, sinon je ne vais pas pouvoir avancer ^^

    En tous cas merci de tes réponses, au moins ça éclaire un peu mes lanternes.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Le second code utile un forEach : for(String arg : args) {. Cela permet de boucler sur un iterable (toute classe qui implémente Iterable ou un tableau) sans utiliser d'index, inutile ici (on ne s'intéresse qu'à la valeur, pas à sa place dans le tableau). Ici, dans for(String arg : args) {, arg prend tour à tour chaque valeur dans le tableau args.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Création d'un état multi-tables
    Par rossy dans le forum Access
    Réponses: 1
    Dernier message: 21/10/2005, 14h40
  2. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18
  3. [T-SQL] exécuter un ALTER TABLE/COLUM multiple
    Par elderion dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/10/2005, 16h06
  4. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

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