Exercice du java à verifier

Bonjour,

Voici deux exercices, j'aimerai savoir si mes reponses sont corrects.

Premier exercice

public class toto{

private int entier;
public Toto() {
this.entier=0;
t h i s . e n t i e r = 0 ;}
public void setToto(int nombre)
{
this.entier=nombre;}

public int getToto()
{
int n=this.entier;
int toto=0;
while (n!=0)
{
toto=toto+1;
n=n/10;
}
return toto;
}

Alors pour n=0, je trouve que toto=1
pour n=11 je trouve toto=2;
pour n=123 je trouve toto=3 ainsi que pour n=423.

Est ce bon?

Dans ce second exercice, ce qui est completé en gras été à completer, j'ai essayé. En esperant que cela soit juste.

public class Main{
public static int chercherMaximum (int [] T)
{
for (int i=0, i<T.length, i++)
{
int maximum=T[0];
int I=0;
if T[i]>maximum
{maximum=tab[i];
I=i;
}
return(I);
}


public static int nombredOccurence(int n, int []T)
{
int occ=0;
for( int i=0, i<T.lenght, i++)
{
if T[i]==n
{
occ==occ+1;
}
return occ
}


public static void main(String [] args) {
int [] tableur={1,4,5,-10,12,4,-6,8,4};

int max=chercherMaximum(tableau);
int nb=nombredOccurence(4,tableau);

System.out.printf("la valeur maximale du tableau est %d\n",max);
System.out.printf("4 apparait %d fois dans le tableau\n",nb);
}
}

Est ce bon?

2 réponses

  1. Pour le premier exo, je comprends mon erreur, comme n=0, on ne verifie pas n!=0 donc toto reste egale à 0.

    En revanche, je ne vois pas où peut être mon erreur donc le maximum. Pouvez vous m'en dire plus?
    1. Si, vous devez laisser l=i et en suite vous avez deux possibilités:

      1. Retourner la valeur maximale du tableau,
      2. Retourner l'indice de la valeur maximale du tableau.

      L'erreur ne viens pas de là, mais de l'initialisation:

      int maximum=T[0];
      int I=0;
      


      Ces initialisations doivent être mises en dehors de la boucle, autrement, à chaque fois vous refaites l'initialisation et vous perdez le résultats des itérations précédentes.
    2. D'accord, mais en faites ce que je veux c'est bien return(maximum) donc le I ne me sert plus à rien. Je n'ai plus besoin du I ?!
    3. Beh oui, vous avez besoin d'un seul entier, pas de tampon, pas de variables provisoire.
      Le maximum vous suffit.
  2. Bonjour,

    Le premier exemple contient une erreure, en faite pour la valeur n = 0, il vous donnera 0 et non pas 1.

    Le deuxième programme (trouver le max), l contient aussi une erreur.

    Le troisième (nombre d'occurrence) me parait correct.
    1. Modérateur
      "Le troisième (nombre d'occurrence) me parait correct."
      Mouais, moi je vois des erreurs partout !

      * Les instructions du for, sont avec des points-virgules
      * La taille du tableau s'écrit length
      * La condition du if doit être entre parenthèse
      * L'opérateur == ne s'utilise pas pour faire des affectations
      * Il manque le point virgule final

      Cinq erreurs sur cinq lignes, c'est quand même difficile de n'en voir aucune !

      int occ=0;
      
      for(int i=0; i<T.length; i++) 
          if (T[i]==n)
              occ=occ+1;
      
      return occ;