Problème java

Fermé
taupy - 16 avril 2012 à 19:33
 Utilisateur anonyme - 17 avril 2012 à 04:16
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
16 avril 2012 à 19:38
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
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 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
16 avril 2012 à 19:55
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
17 avril 2012 à 04:16
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