Adloun

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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →