Partage
  • Partager sur Facebook
  • Partager sur Twitter

Voir s'il y a des nombres après la virgule

    22 septembre 2016 à 19:28:59

    Bonsoir,

    Je m'exerce en java, j'ai donc suivis des exercices sur un site. JVoici l'énoncé (c'est en anglais) :

    http://pastebin.com/yFkJ05fQ

    Et voici ce que j'ai déjà fais : 

    public class NumberFun {
      public static long findNextSquare(long sq) {
        if(sq > 0)
        {
           long a = Math.sqrt(sq);
           long b = a + 1;
           long c = b*b;
           if(nombre après la virgule alors return -1 sinon on return c)
           return c;
        }
        else { return -1; }
           
          return 0; 
      }
    }

    Mais je suis coincé lorsqu'il faut voir si la variable "c" est un nombre a virgule, car on veut simplement des nombres parfaits et donc sans virgule.

    PS: Je ne sais pas si le reste est bon, à vous de me le dire ^^

    Cordialement

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      22 septembre 2016 à 19:59:53

      Salut,

      Un indice:

            Float i = new Float(1.0);
            Integer a = new Integer(5);
            boolean e = a instanceof i;
      

      Bon courage !

      • Partager sur Facebook
      • Partager sur Twitter
        22 septembre 2016 à 20:18:03

        Je vais essayer d'expliquer ce que tu as écris, afin d'avoir déjà compris ce que tu as écris ^^

        Tu déclares une variable i de type float qui est égale à 1.0?

        Tu crées un Integer (un int mais en objet) qui est égale à 5

        Par contre je veux bien savoir à quoi sert instanceof, on l'a pas vue en cours :s 

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 septembre 2016 à 20:35:59

          >Je vais essayer d'expliquer ce que tu as écris, afin d'avoir déjà compris ce que tu as écris ^^

          Tu n'as pas compris.

          float et Float sont deux types bien différents.

          • L'un est un type primitif, ne représentant rien d'autre que le type de données que la variable peut recevoir
          • L'autre est un wrapper du premier représentant alors le type primitif, tout en permettant d'effectuer des opérations sur la donnée renseignée.

          Grâce à ces wrappers, tu n'as plus besoin d'effectuer de test entre deux données, tu sais dors et déjà que ce qui est enveloppé par ces instances appartiennent à des types bien prédéfinis.

          Donc en créant une instance du wrapper de float: new Float(1.0); tu sais tout de suite que l'instance ne tolère que les décimaux à virgule.

          Tu n'as donc plus qu'à tester si l'entrée est une instance de (instanceof) Float.

          • Partager sur Facebook
          • Partager sur Twitter
            22 septembre 2016 à 20:52:38

            Bonjour,

            Tu te compliques la tâche. sq est un carré parfait si et seulement si a^2 vaut sq.

            • Partager sur Facebook
            • Partager sur Twitter
              22 septembre 2016 à 21:02:41

              Donc si(c instanceof i) alors return -1

              J'essaie de comprendre, si ce n'est pas ça, ne me cris pas dessus :D

              -
              Edité par Balaure 22 septembre 2016 à 22:01:19

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 septembre 2016 à 23:55:38

                Re-bonjour,

                >Donc si(c instanceof i) alors return -1 J'essaie de comprendre, si ce n'est pas ça, ne me cris pas dessus :D

                Si ma manière de faire te paraît absconse, brubru t'as également donné une solution. ;)

                • Partager sur Facebook
                • Partager sur Twitter
                  23 septembre 2016 à 10:45:38

                  brubru777 a écrit:

                  Bonjour,

                  Tu te compliques la tâche. sq est un carré parfait si et seulement si a^2 vaut sq.


                  Tout d'abord merci pour ton aide. Mais j'ai une valeur d'entrée (sq), j'utilise un math.sqrt(sq) afin d'avoir le nombre (a), j'ajoute 1 pour avoir le prochain carré parfait (b),  et je le multiplie par sois même pour avoir le carré parfait (c). 

                  Mais je crois que ce que tu m'as dis corresponds pas à ce que je recherche (enfin je crois, ou bien j'ai mal compris ce que tu me dis ^^)

                  Je veux voir si le nombre qu'on obtient à c est un nombre entier ou non, si c'est un nombre à virgule, alors je retourne -1 sinon je retourne c

                  SongBird, je suis tout aussi intéressé par ton résonnement, si tu peux me la décrire stp :D

                  -
                  Edité par Balaure 23 septembre 2016 à 10:46:10

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 septembre 2016 à 13:43:46

                    > If the parameter is itself not a perfect square, than -1 should be returned

                    Tu dois vérifier que sq est un carré parfait, pas c.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      24 septembre 2016 à 4:00:39

                      Salut,

                         public static void describe(Number number)
                         {
                             if(number instanceof Float)
                             {
                                 System.out.println("instance of Float");
                                 return;
                             }
                             if(number instanceof Integer)
                             {
                                 System.out.println("instance of Integer");
                                 return;
                             }
                             if(number instanceof Double)
                             {
                                 System.out.println("instance of Double");
                                 return;
                             }
                             if(number instanceof Long)
                             {
                                 System.out.println("instance of Long");
                                 return;
                             }
                         }
                      

                      Je te laisse ça, à toi de te servir de la logique pour arriver à tes fins. ;)

                      -
                      Edité par Anonyme 24 septembre 2016 à 4:02:04

                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 septembre 2016 à 18:17:36

                        _SongBird_ a écrit:

                        Salut,

                         public static void describe(Number number) { if(number instanceof Float) { System.out.println("instance of Float"); return; } if(number instanceof Integer) { System.out.println("instance of Integer"); return; } if(number instanceof Double) { System.out.println("instance of Double"); return; } if(number instanceof Long) { System.out.println("instance of Long"); return; } } 

                        Je te laisse ça, à toi de te servir de la logique pour arriver à tes fins. ;)

                        -
                        Edité par _SongBird_ 24 septembre 2016 à 4:02:04

                        D'après ce que tu as mis, je devrai mettre ça dans ce cas ? 

                        if(sq instanceof Float)
                               {
                                 return -1;
                               }
                               else
                               {
                                 return c;

                        brubru777 a écrit:

                        > If the parameter is itself not a perfect square, than -1 should be returned

                        Tu dois vérifier que sq est un carré parfait, pas c.

                        Donc :

                        if(a*a = sq) then return sq; ?
                        
                        







                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 septembre 2016 à 0:33:44

                          > If the parameter is itself not a perfect square, than -1 should be returned

                          if (a * a != sq)
                              return -1;



                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 septembre 2016 à 9:24:30

                            En java j'aurais tendance à faire :

                            public static void main(String[] args) {
                            
                            		System.out.println(isEntier(3.0f));
                            		System.out.println(isEntier(3.1f));
                            
                            	}
                            	
                            	private static boolean isEntier(float sq)
                            	{
                            
                            		Float temp = sq;
                            
                            		return temp.intValue() == sq;
                            	}
                            	


                            Je pense qu'il doit y avoir encore plus simple, cast entre primitif, plutôt que de passer pars un Float:

                            public static void main(String[] args) {
                            		
                            
                            		System.out.println(isEntier2(3.0f));
                            		System.out.println(isEntier2(3.1f));
                            		
                            	}
                            
                            private static boolean isEntier2(float sq)
                            	{
                            
                            		return ((int)sq) == sq;
                            	}



                            • Partager sur Facebook
                            • Partager sur Twitter

                            Voir s'il y a des nombres après la virgule

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown