difficulté à écrire une boucle
Bonjour,
je bloque sur un problème tout bête, mais je ne parviens pas à le résoudre.
Je vous mets ici tout mon programme, l'énoncé compris.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
/*
* Dans une course de motos, on demande au candidat de réaliser une série de tests jusquà ce quil
* obtienne 10 essais différents. Les 10 essais , dont le temps est exprimé en secondes, seront
* stockés dans un tableau . A chaque saisie dun temps, on examine sil a été déjà réalisé ; si tel
* est le cas, le candidat est invité à refaire un essai ; sinon , le temps est homologué et stocké
* dans le tableau . Déterminer ensuite le temps moyen des essais du candidat et son record .
*
*/
public class moto {
private final int NB_ESSAIS = 10;
private static double temps = 0;
private static double [] tabTemps = new double[10];
private double moyenne = 0;
private int record = 0;
int getNbEssais()
{
return this.NB_ESSAIS;
}
double getMoyenne()
{
return this.moyenne;
}
int getRecord()
{
return this.record;
}
public void affichage(double [] tabTemps)
{
Terminal.sautDeLigne();
for (int i = 0; i < tabTemps.length; i++)
{
Terminal.ecrireStringln("Temps réalisé au tour " + (i + 1) + ": " + (int) tabTemps[i] + " secondes.");
}
Terminal.sautDeLigne();
}
public boolean trouve(double temps, double [] tabTemps)
{
for (int i = 0; i < tabTemps.length; i++)
{
if (tabTemps[i] == temps) return true;
}
return false;
}
public double calculMoyenne(double [] tabTemps)
{
double somme = 0;
for (int i = 0; i < tabTemps.length; i++)
{
somme = somme + tabTemps[i];
}
this.moyenne = somme / tabTemps.length;
return this.moyenne;
}
public int record(double [] tabTemps)
{
tabTemps[0] = record;
for (int i = 0; i < tabTemps.length; i++)
{
if (tabTemps[i] > record) record = (int) tabTemps[i];
}
return record;
}
public double [] tableauTemps()
{
for (int i = 0; i < this.getNbEssais(); i++)
{
Terminal.ecrireStringln("Essai " + (i + 1) + ".");
Terminal.ecrireStringln("Donnez le temps réalisé en secondes:");
temps = Terminal.lireInt();
if (!this.trouve(temps, tabTemps))
{
tabTemps[i] = temps;
} else
{
Terminal.ecrireStringln("redonnez votre valeur.");
tabTemps[i] = Terminal.lireInt();
}
}
return tabTemps;
}
public static void main(String [] args)
{
moto m = new moto();
m.tableauTemps();
m.affichage(tabTemps);
m.calculMoyenne(tabTemps);
m.record(tabTemps);
Terminal.ecrireStringln("La moyenne réalisée est de " + m.getMoyenne() + " secondes.");
Terminal.sautDeLigne();
Terminal.ecrireStringln("La meilleure performance est de " + m.getRecord() + " secondes.");
}
} |
Mon souci: quand je tape une valeur et qu'elle existe déjà dans le tableau, mon programme me redemande une valeur. Et peu importe si elle est déjà dans le tableau ou non, il l'accepte.
Je sais que c'est exactement ce qui est écrit dans mon programme, donc c'est normal qu'il fasse cela, mais je ne sais pas comment créer une boucle de manière à ce que le programme me redemande une bonne valeur tant qu'elle n'est pas dans le tableau.
Pourriez-vous, m'aider, s'il vous plait?
Merci par avance,
johnny3