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

Eclipse Java Discussion :

Mon premier exercice en Java avec Eclipse


Sujet :

Eclipse Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 135
    Points : 39
    Points
    39
    Par défaut Mon premier exercice en Java avec Eclipse
    Bonjour,

    Voici mon essai pour calculer la factorielle d’un nombre entier donné par l’utilisateur et affiche le résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import java.util.Scanner;
    public class exercice1 {
        public static void main(String[] args) {
            int F=1;
            Scanner in = new Scanner(System.in);
            int x = in.nextInt();
                System.out.println ("Donner un entier");           
                for (int i=0; i<x; i++)
                {  F=F*i; }    
                System.out.println("Le factoriel de "+x+" est : "+F);
            }
     }
    Lorsque je clique sur Run rien ne s'affiche.

    Quelqu'un saurait-il m'indiquer ce qui se passe ?

    Merci d'avance pour votre aide.

  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,

    Ton programme attend en fait que tu entres un entier au clavier. Dans Eclipse, si tu viens de taper ton code, il faut cliquer dans la console, pour lui donner le focus (après tu pourras relancer le programme autant de fois que tu veux dans être obligé de le faire, tant que la console à le focus), puis entrer ton nombre, puis appuyer sur la touche Entrée.

    Si tu inverses la ligne de lecture de l'entier et celle qui affiche le message "Donner un entier", tu verras ce message s'afficher, et ensuite le programme attendra la saisie de l'entier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println ("Donner un entier");    
    int x = in.nextInt();
    Si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.print("Donner un entier : ");    
    int x = in.nextInt();
    La saisie du nombre se fera au bout de la ligne avec le message "Donner un entier : ".

    Sinon, il y a deux erreurs dans ton calcul :
    • il ne faut pas inclure 0 dans la boucle, parce que 0 fois n'importe quoi vaut 0, donc tu aurras toujours 0 comme résultat.
    • il faut inclure x dans la boucle, parce que n! = 1 × 2 × ... × (n-2) × (n-1) × n. Donc [codeinline[for (int i=1; i<=x; i++)[/codeinline]
    • Eventuellement, tu peux éliminer le 1 aussi de la boucle, parce que 1 fois un nombre est égal à ce nombre, mais la boucle ne correspondra plus exactement à la formule de factorielle. Au final, on pourrait écrire, au plus simple (la multiplication étant commutative) : for (int i=x; i>1; i--)
    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 chevronné

    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 974
    Points : 1 825
    Points
    1 825
    Par défaut
    et un test pour borner le calcul de n! à des valeurs de n telles que : n! < Integer.MAX_VALUE (ou Long.MAX_VALUE si tu décides d'utilser des long )

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 135
    Points : 39
    Points
    39
    Par défaut
    après que j'ai corrigé mes fautes le programme marche mais y a ce message dans le programme :
    Nom : java.JPG
Affichages : 463
Taille : 3,4 Ko

    et ce deuxième exemple
    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 Etudiant {
        String nom;
        Double DS;
        Double Exm;
        
        String Get_nom(); {
        	return nom;
        	} 
        Double Get_DS(); {
        	return DS;
        	} 
        Double Get_Exm (); {
        	return Exm; }}
    il affiche erreur a partie en gras change to abstract ? et pourquoi

  5. #5
    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
    Pour le premier cas "ressource non fermée" : quand on ouvre un InputStream (ou un OutputStream, un Writer, un Reader, etc...), il faut le fermer quand on s'en sert plus. Regarde à ce sujet try-with-resource. L'instance de Scanner que tu créés est également dans ce cas, mais tu l'a créé en partant d'un InputStream que tu n'as pas créé toi-même (System.in), donc que tu n'as pas à fermer (c'est celui ouvre qui a la responsabilité de fermer). Mais Eclipse ne le sait pas ça, donc il t'indique un warning, juste pour t'interpeller sur le fait qu'une resource est possiblement pas libérée).

    Pour le second cas,

    La syntaxe pour le code d'une méthode c'est (sans parler des convetions qui indiquent que les noms de méthodes commencent par une minuscule, et ne contiennent pas de underscore) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String Get_nom() {
        return nom;
    }
    Quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String Get_nom(); {
        	return nom;
        	}
    c'est comme si tu écrivais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String Get_nom(); 
     
    {
        return nom;
    }
    Le point-vrigule après la signature indique que ce qui se trouve après (le bloc) n'est pas dans la méthode : donc tu as une signature sans code, et un bloc de code (qui ne compilera pas du reste, puisqu'on y fais référence à une variable nom inaccessible, et qu'on y fait return, ce qui n'est pas perms dans un tel bloc.
    On peut faire une méthode sans code dans 2 cas : dans une Interface ou dans une classe Abstraite.

    Eclipse donc te propose les 2 solutions pour corriger ce problème :
    • transformer ta méthode, et donc la classe, en abstrait (en ajoutant abstract)
    • ajouter un bloc de code (un corps de méthode, ou body en anglais), donc supprimer ce point-virgule



    PS. ce que veux dire @Playwix, c'est que tu t'apercevras très vite que tu ne peux pas calculer de factorielle au-delà d'une certaine valeur (12) parce que un int est limité, et que 13! dépasse sa capacité, donc la valeur qu'on obtient est fausse. On devrait donc ajouter un test qui indique que si x est supérieur à 12, où inférieur à 0 d'ailleurs, on ne peut calculer la factorielle.
    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.

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Octobre 2014
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2014
    Messages : 135
    Points : 39
    Points
    39
    Par défaut
    Merci pour vous remarques, ils sont bénéfiques

    voici la version total de code cette fois pas d'erreur de compilation mais erreur d’exécution. Pourquoi ?
    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
     
    /**
     * TD N°1_Exercice 2:Etudiant
     * 
     **/
    public class Etudiant {
        //Déclaration des attributs
    	private String nom;
        private float DS;
        private float Exm;
       //Déclaration des méthodes : Les accesseurs
        String Get_nom() { return nom; } 
        double Get_DS()  { return DS;  } 
        float Get_Exm () { return Exm; }
        //* Les modificateurs  
        void Set_nom (String M){ nom=M;}
        void Set_DS (float X)  { DS=X; }
        void Set_Exm (float Y) { Exm=Y;}
        Etudiant(String a,float w,float y){
        	nom=a;
        	DS= w;
        	Exm=y;}
        public double moyenne(float a, float b)
        {
        	return ((a+b)/2);
        }
        public static void main(String[] args) {
            Etudiant E1=new Etudiant("ALI", 13, 8);
            Etudiant E2=new Etudiant("SALAH",14.5,12);
            System.out.println (E1.nom+" a moyenne "+E1.moyenne(13, 8));
            System.out.println (E2.nom+" a moyenne "+E2.moyenne(14.5,12));   
        }
     }
    Erreur :Exception in thread "main" java.lang.NullPointerException
    at Etudiant.main(Etudiant.java:28)

  7. #7
    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
    Quand tu modifies une question, fais le jusqu'au bout : ce nouveau code ne compile pas. Parce que les paramètres de tes constructeurs et méthodes sont des float, et tu passes des doubles en paramètre lors de l'appel. Par défaut, en Java, les valeurs avec . dedans sont des doubles : pour indiquer que ce sont des floats, met un f à la fin (14.5f). Après correction (2 lignes à corriger : 29 et 31), tu pourras l'éxécuter (et sans erreur).
    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. faire du php et java avec eclipse
    Par artotal dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 03/02/2009, 21h07
  2. Réponses: 0
    Dernier message: 03/01/2009, 11h41
  3. Mon premier programme en Java
    Par eilijah dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 08/12/2008, 14h00
  4. Problème Création d'un projet en JAVA avec ECLIPSE
    Par norad2010 dans le forum XMLRAD
    Réponses: 4
    Dernier message: 02/05/2008, 16h49
  5. Problème avec mon premier exécutable en java
    Par Icefire dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 25/04/2008, 09h42

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