Problème java

taupy -  
 Utilisateur anonyme -
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!



A voir également:

4 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
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
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
Utilisateur anonyme
 
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