programmation Java (école d'ingénieur) · Chapitre 16 · Exercice de TD
Une commande de plus
Réseau : sockets client/serveur · niveau 2
Énoncé
Ajouter au protocole de la calculatrice la commande MOY x1 x2 ... xn, qui renvoie la moyenne de entiers avec deux décimales (OK 12.00), ou ERR ... si aucun nombre n'est donné ou si l'un d'eux est invalide. Écrire la méthode qui traite cette commande et indiquer où l'appeler dans repondre.
Corrigé
La commande a un nombre variable d'arguments : il faut la traiter avant le test mots.length != 3 de repondre, par exemple juste après la ligne de QUIT : if (mots[0].equals("MOY")) return moyenne(mots);
static String moyenne(String[] mots) { // mots[0] vaut "MOY"
if (mots.length < 2) return "ERR MOY attend au moins un nombre";
double somme = 0;
try {
for (int i = 1; i < mots.length; i++) somme += Long.parseLong(mots[i]);
} catch (NumberFormatException e) {
return "ERR nombre invalide";
}
return String.format("OK %.2f", somme / (mots.length - 1));
}
MOY 12 15 9 => OK 12.00
MOY 7 => OK 7.00
MOY => ERR MOY attend au moins un nombre
MOY 3 x => ERR nombre invalide
Attention, String.format dépend de la langue du système : un serveur réglé en français répondrait OK 12,00. Dans un protocole, mieux vaut fixer la langue : String.format(Locale.ROOT, ...).
100 % gratuit
La suite du chapitre est sur Adloun
- 9 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.