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

Langage Java Discussion :

Programme affichage table multiplication


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : etudiante
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 3
    Points
    3
    Par défaut Programme affichage table multiplication
    Bonjour je débute en java et je m'entraîne sur les boucles mais je bloque sur cet exercice:

    " Écrivez un programme qui affiche la table de multiplication d’un chiffre. Ce chiffre sera entré
    par l’utilisateur. Par exemple, si le chiffre est 3, le programme affiche :
    1 x 3 = 3
    2 x 3 = 6
    3 x 3 = 9
    ... "

    Dois-je utiliser une boucle while ou for ? Et de plus, mon programme ne me permet pas d'entrer un nouveau multiplicateur sans compiler de nouveau.
    Quelqu'un peut me montrer un exemple de programme pour cet exo

    help please

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le choix entre une boucle for et une while est plus souvent un problème de clareté, de logique (et éventuellement de portée de variables, un souci que tu peux mettre de côté en tant que débutante pour le moment).
    Toute boucle for peut être écrite sous forme de while et inversement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(int i=0; i<10; i++) {
         System.out.println(i);
    }
    est équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i=0;
    while( i<10 ) {
         System.out.println(i);
         i++;
    }
    En revanche, le choix est plus déterminant lorsqu'il s'agit d'être sûr qu'au moins une itération doit être faite : c'est le choix entre un while et un do/while. Dans le for et le while, la condition est toujours vérifier avant d'entrer dans la boucle : si elle est fausse dès le début, on ne boucle pas; Avec le do/while, on teste forcément après une première itération.

    Pour afficher la table de multiplication, utiliser un for me semble le plus évident, puisqu'il s'agit d'afficher un nombre fixe de phrases qui contiennent un nombre qui varie par incrémentation (de 1 à 10).
    En revanche, pour exécuter le programme en boucle tant que (déjà, tu peux voir qu'une simple formulation en français peut orienter sur le choix entre un for, un while et un do/while) l'utilisateur le demande, par exemple, qui affiche :
    "veuillez saisir un nombre :" et après l'affichage de la table "Voulez-vous afficher une autre table (O/N) ?"
    On doit toujours donc afficher la première phrase, puis afficher la table, puis afficher la seconde phrase, et là teste si O ou N, est boucler ou pas selon. Donc on fait forcément au moins une fois tout ça, donc do/while.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    char continuer; 
    do {
       // saisir un nombre
       // afficher la table
       // demander si on veut continuer (affecter la variable continuer avec un caractère saisi au clavier)
    }while( continuer=='O' || continuer=='o' );
    On peut résoudre aussi ça par un while, en initialisant la variable de manière à simuler la saisie de O par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    char continuer= 'O'; //on simule oui
    while( continuer=='O' || continuer=='o' ) {
         /**...*/
    }
    Ensuite, tu pourras utiliser également des boucles pour redemander la saisie tant qu'elle n'est pas correcte : là, pareil, c'est un do/while. Forcément il faut qu'on ait une saisie avant de pouvoir déterminer si elle est correcte ou non.
    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
    Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : etudiante
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 3
    Points
    3
    Par défaut essai boucle for
    Bonjour Joel, merci pour ta réponse.

    J'ai fais un essai avec la boucle for et j'ai toujours des erreurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Table_de_3{
      public static void main (String[]args){
     
        int multiplicateur;
     
        Terminal.ecrirestring ("entrez le multiplicateur");
        multiplicateur = Terminal.lireInt();
        for (int i = 1; i <12; i++); {
     
    System.out.println ( " multiplicateur " + " x ")+ " i " + " = + (i*multiplicateur));
                              }
    }
    }

    Peux tu me dire ce qui ne va pas ?

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    1. il y a un point-virgule (;) juste après le for. Donc le bloc situé après le for est un bloc indépendant. La variable i ayant une portée limité au for et à son bloc, elle n'est pas accessible du reste de la méthode et des autres blocs, donc pas accessible dans le bloc que tu as écrit, donc ça ne compile pas (tu ne peux pas utiliser i dans le System.out.println()).
    2. il y a une parenthèse après " x ". Ce qui se trouve après ne fait pas partie des paramètres de System.out.println. Comme il y a un plus (+) juste après, Java cherche à concaténer le résultat retourné par la méthode System.out.println avec ce qui se trouve après le +. Mais la méthode System.out.println ne retourne rien, donc ça ne compile pas.
    3. Il y a une chaine qui est ouverte par le " de " = + (i*multiplicateur)); mais cette chaîne n'est jamais fermée, donc ça ne compile pas. Il manque un " juste après le " =

    Le programme qui compile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public class Table_de_3{
      public static void main (String[]args){
     
        int multiplicateur;
     
        Terminal.ecrirestring ("entrez le multiplicateur");
        multiplicateur = Terminal.lireInt();
        for (int i = 1; i <12; i++) {
     
    System.out.println ( " multiplicateur " + " x " + " i " + " = " + (i*multiplicateur));
                              }
    }
    }
    Ce programme affiche, pour un multiplacateur à 5 :
    entrez le multiplicateur5
     multiplicateur  x  i  = 5
     multiplicateur  x  i  = 10
     multiplicateur  x  i  = 15
     multiplicateur  x  i  = 20
     multiplicateur  x  i  = 25
     multiplicateur  x  i  = 30
     multiplicateur  x  i  = 35
     multiplicateur  x  i  = 40
     multiplicateur  x  i  = 45
     multiplicateur  x  i  = 50
     multiplicateur  x  i  = 55
    ceci est dû au mauvais placement des " dans le System.out.println. " multiplicateur " + " x " affiche le texte " multiplicateur " suivi du texte " x ", soit "multiplicateur x" . Pour afficher la valeur de la variable mulitplicateur avant " x ", il faut simplement faire multiplicateur + " x " pour afficher "5 x " (quand multiplicateur vaut 5). Je te laisse corriger le reste...
    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
    Candidat au Club
    Femme Profil pro
    etudiante
    Inscrit en
    Janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : etudiante
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2017
    Messages : 12
    Points : 3
    Points
    3
    Par défaut
    Merci,
    J'ai ce message d'erreur à la ligne 4,

    1 error found:
    File: C:\Users\Tshobo\Desktop\programmes\Table_de_3.java [line: 6]
    Error: cannot find symbol
    symbol: method ecrirestring(java.lang.String)
    location: class Terminal

  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 : 54
    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
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et bien, comme il est clairement indiqué dans le message, la méthode ecrirestring(String) n'existe pas dans la classe Terminal. Tu ne peux donc pas l'appeller. Si tu penses qu'elle existe, alors c'est qu'elle existe, mais pas exactement écrite comme tu l'écrit. Par exemple, Java est sensible à la casse (les majuscules et les minuscules sont importantes). Peut-être que la méthode s'appelle donc en réalité ecrireString() ? Comme je ne connais pas cette classe Terminal, qui n'est pas standard, je ne peux pas plus t'aider.
    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.

Discussions similaires

  1. Réponses: 10
    Dernier message: 27/06/2007, 17h46
  2. [VB6] acces à DB à tables multiples
    Par waspy59 dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 27/03/2006, 10h28
  3. requete sql pour bd access97 a tables multiples
    Par waspy59 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2006, 00h11
  4. tables multiples au lieu de table unique
    Par rafawel dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 13/07/2005, 11h41
  5. Programmation par unités multiples
    Par Mimi Bulles dans le forum Langage
    Réponses: 6
    Dernier message: 09/06/2005, 23h08

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