Java erreur de code

Boss38400 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
je dois faire un code de java pour mon td
mais il marche pas quand je compile

je dois pendre un entier dans le cas de mon programme l'entier "a "qui est égale à 7
vérifier si il est pair ou impair
dans le cas pair diviser par 2
dans le cas impair *3+1
jusqu'à que l'entier soit égale à 1
et tous afficher

voila mon programme

{
           double [] monTableau;
           monTableau = new double[20];
           double b,a;
           int i;
           i=0;
           a=7;
          if (a%2 == 0) 
            {
            b=a/2;
            monTableau[i] = 'b';
            }
          else
            {
            b=(a*3)+1;
            monTableau[i] = 'b';
            }
            i++;
  while (b!=1)
   {
     if (b%2 == 0) 
      {
       b=b/2;
       monTableau[i] = 'b';
      }
     else
      {
       b=(b*3)+1;
       monTableau[i] = 'b';
      }
     i++;
      }
     System.out.println(monTableau); }
}
A voir également:

6 réponses

toto
 
Bonjour

mais il marche pas quand je compile
ça nous aurait aidés que tu recopies le message d'erreur.

Sinon, as-tu une idée de la différence entre monTableau[i] = 'b'; et monTableau[i] = b; ?
Surtout, n'essaye pas une modif au hasard pour voir, réfléchis d'abord.
0
Nixial
 
BOnjour,

Tu dois revoir l'algorithme, c'est pas du tout ce que tu souhaites faire, ce que tu as écris là .

Tu as un entier a.

Tu fais un controle si pair ou impair, en fonction tu le modifies et tu fais ton print dans la console.

Ceci doit etre imbriqué dans une boucle while par exemple tant que a != 1.

Tu n'as pas besoin de b, ni de tableau sauf si tu veux enregistrer l'ensemble des valeurs prises par a.

Bonne chance.
0
boy2 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
tu n'aide vraiment pas, il ya des nuls en programmation
-1
Bibi38
 

int y=7;
        while ( y != 1 )
   {
        if ( y%2 == 0 )
           y=y/2;
        else
           y=3*y+1;
        System.out.print(y+ " ");
   }

    }


voila le bon code
pas besoin de passer par un tableau
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
Si ton tableau est rempli de double, pourquoi tu mets des ' ' dans monTableau[i] = 'b'; et pas monTableau[i] = b;
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Bonjour,

Tout d'abord, sauf monTableau[i] = 'b'; qui doit être remplacé par monTableau[i] = b;
ainsi que la liste résultat System.out.println(montableau);
qu'il faut par exemple remplacer par:
for (i = 0;i <20;i++)
System.out.println(">>>>>> " + (i+1) + " " + monTableau[i]);

ton programme fait ce que tu souhaites. Il faudrait tout de même y apporter queques améliorations.

Il fonctionne avec a = 7, mais si par exemple a = 77, la boucle
while (b!=1)
{
.......

"s'allonge" et plante par dépassement de la capacité du tableau.
Il faudrait simuler le traitement sans écrire dans monTableau pour calculer la taille du tableau.
Par exemple:


double [] monTableau;
// monTableau = new double[20];
int a,b;
int i = 0;
// i=0;
a=7;

// bien sûr sans écrire dans monTableau
if (a%2 == 0)
{
b=a/2;
}
else
{
b=(a*3)+1;
}
while (b!=1)
{
if (b%2 == 0)
{
b=b/2;
}
else
{
b=(b*3)+1;
}
i++;
}
int taille = i + 1;
monTableau = new double[taille];
i = 0;
if (a%2 == 0)
{
b=a/2;
//monTableau[i] = b;
}
else
{
b=(a*3)+1;
//monTableau[i] = b;
}
monTableau[i] = b;
i++;
while (b!=1)
{
if (b%2 == 0)
{
b=b/2;
//monTableau[i] = b;
}
else
{
b=(b*3)+1;
//monTableau[i] = b;
}
monTableau[i] = b;
i++;
}
for (i = 0;i <monTableau.length;i++)
System.out.println(">>>>>> " + (i+1) + " " + monTableau[i]);

Voir aussi s'il est nécessaire d'avoir un tableau de doubles (c'est peut-être imposé)

Quant à l'erreur de compilation (ou d'execution), ce n'est pas dû à cette partie de code.

Cordialement.

Dan
-1
Utilisateur anonyme
 
Salut,

Bien entendu qu'il n'est pas nécéssaire de passer par un tableau pour faire cette petite liste de résultats.

Mais pourquoi l'en empêcher si c'est un exercice sur les tableaux?

Cordialement.


Dan
-1