public class ScoreCard { strong text
private double[] scores;
/**
* @param val
* @param low
* @param high
* @return low if val < low,
* high if val > high,
* val if val is between low and high
*/
private double constrain(double val, int low, int high) {
if (val < low)
return low;
if (val > high)
return high;
else
return val;
}
/**
* DEEP copy m into scores with each item contrained between 0 and 100.
* use method {@link this#constrain(double, int, int)}.
* For example, if s = {-15.2, 67.4, 126.8}, scores should become
* {0, 67.4, 100}, AND scores should be a DEEP copy of s.
* @param s (assume s is not null)
*/
public void setMarks(double[] s) {
for(int i = 0; i < s.length; i++) {
if (s[i] < 0 || s[i] > 100)
constrain(s[i], 0, 100);
this.scores[i] = s[i];
}
}
Je suis coincé sur cette partie du code depuis un moment maintenant. Comme les états Javadoc, j'ai du mal à appeler les paramètres de "constrain" à "setMarks" pour définir des scores < 0 à 0 et des scores> 100 à 100. Je ne pense pas non plus que mon code crée correctement une copie profonde de "s" en "scores" correctement.Passer des paramètres à une méthode et créer une copie en profondeur
Toute poussée dans la bonne direction serait grandement appréciée.
Vous callin Contraindre(), mais vous ne tenez pas compte de la valeur contrainte que la méthode retourne. –