Problème java

taupy -  
 danimo -
Bonjour,

Je reviens vers vous pour mon problème.
Je dois donc générer aléatoirement un byte entre 32 et 127.
J'ai créé une fonction qui génère un byte mais le problème, c'est que ce nombre généré est compris entre -128 et 127.

Il faut, selon les consignes du devoir, utiliser une formule comprenant une addition et l'utilisation du modulo.

Je cherche mais en vain, je ne trouve pas!
Quelqu'un pourrait-il m'aider ??

Je vous remercie!

4 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Si tu as déjà généré aléatoirement un nombre entre -128 et 127, tu as peut être déjà fait la manipulation que tu cherches sans t'en rendre compte, il faudrait voir comment tu as fait !
    0
  2. taupy
     
    Merci de prendre le temps de répondre...

    Voici la fonction qui génère un tableau de byte:

    public byte nextByte(){
    Random generateur = new Random(System.currentTimeMillis());
    byte [] tableau = new byte[1];
    generateur.nextBytes(tableau);
    return tableau[0];
    }//end nextByte
    0
  3. KX Messages postés 19031 Statut Modérateur 3 020
     
    Ce n'est pas très propre de créer un tableau à une case comme ça, en plus vu que les byte ne permettent pas de faire des calculs (addition, modulo, etc) sans avoir à repasser par des int, il vaudrait mieux travailler directement avec des int, via les méthodes nextInt ou next.

    Remarque : plutôt que d'utiliser une graine sur le temps tu peux laisser le constructeur par défaut de Random...

    public byte nextByte()
    {
        Random generateur = new Random();
        int n;
        
        // calcul avec des int
        
        return (byte) n;
    }
    0
  4. danimo
     
    Salut,
             int min = 32;
             int max = 127;
             int nbreVal = ((max - min) +1); // nombre de valeurs possibles
             Random r = new Random();
             int aI = min + r.nextInt(nbreVal);
             System.out.println("Le nombre int aléatoire est " + aI);
             //conversion int / String
             String aStr = "" + aI;
             System.out.println("Le nombre String aléatoire est " + "\"" + aStr + "\"");
             
             //conversion int / byte:
             Integer intObj = new Integer(aStr);
             byte leByte = intObj.byteValue(); 
             System.out.println("byte leByte = " + leByte);
             
          	// Ou bien entendu:
             leByte = Byte.parseByte(aStr); 
             System.out.println("byte leByte = " + leByte);
    


    Cordialement,

    Dan
    0