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 :

Petit soucis avec Math.round()


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Petit soucis avec Math.round()
    Bonjour,

    J'ai un exercice qui j'ai eu en contrôle et j'essaie de le refaire sur Eclipse.

    Voici l'énoncé :
    Il faut écrire le constructeur NombreCache() (qui a un seul attribut : int unNombre), qui affecte à l'attribut unNombre, un nombre entier entre 0 et 100, généré aléatoirement en supposant qu'il existe :
    - une méthode float random() de la classe Math qui génère une valeur de type float appartenant à l'intervalle [0,1].
    - une méthode int round(float a) de la classe Math qui renvoie la valeur entière la plus proche du nombre passé en paramètre.


    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import java.lang.Math;
     
    public class NombreCache {
    	int unNombre;
     
    	public NombreCache(){
    		unNombre=Math.round(Math.random()*10.0);
    	}
    }
    Eclipse me dit que je doit rajouter int devant Math.round. Le problème, c'est que Math.round() doit retourner un int.

    Alors je demande de l'aide.
    Merci à vous
    Dernière modification par Invité ; 02/11/2008 à 16h10.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    10.0 correspond à un double, et de toute manière Math.random() retourne un double et non pas un float.

    De ce fait tu appelles la méthode Math.round(double) qui retourne un type long... d'où la nécessité du cast

    a++

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de m'avoir répondu.

    Le prof nous aurait induit en erreur alors.
    Je prends en note.

    C'est donc long round(double a) et double random() ?
    Par contre, je voudrais savoir pourquoi l'énoncé nous indique int round(float a) et float random() ?

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Adenora Voir le message
    Par contre, je voudrais savoir pourquoi l'énoncé nous indique int round(float a) et float random() ?
    Aucune idée : demande à ton prof

    au passage si int round(float a) existe bel et bien, float random() n'existe pas du tout.


    Et de toute manière même si c'était le cas :
    Ce code ci dessous renverrait un double car 10.0 est un double...

    Pour définir une constante float il faut la faire suivre d'un L : 10.0f ou 10.0F
    De même pour les long : 10l ou 10L (on préfèrera la seconde forme plus lisible car le 'l' minuscule peut se confondre avec le chiffre 1)

    a++

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour l'explication.

    Je vais voir ça avec mon prof.

  6. #6
    Membre averti Avatar de Tryp'
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    Si j'ai bien compris tu veut generer un nombre aléatoire compris entre 0 et 100 ?
    Dans ce cas la c'est pas difficile :
    Math.round( (int) Math.random()*100);

    Pourquoi?
    Car (int) force le programme a te renvoyer un int.
    Ensuite pourquoi x 100 car a la base math.random te renvoi un chiffre compris entre 0,00 et 0,99, donc en le multipliant par 100 tu obtient un nombre entre 0 et 100.

    Voila

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

Discussions similaires

  1. [DEB.]Petit soucis avec #include <math> et Dev-Cpp
    Par Marc_3 dans le forum Dev-C++
    Réponses: 3
    Dernier message: 30/01/2006, 18h19
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

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