A voir également:
- Problème Fonction De Conversion
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Monnaie conversion - Télécharger - Banque & Budget
- Fonction somme excel - Guide
- Conversion m3 en m - Forum Programmation
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 23/08/2015 à 12:48
Modifié par KX le 23/08/2015 à 12:48
Bonjour,
En jetant un oeil rapide au code, ça c'est faux :
Si tu utilises l'opérateur
Remarque : il y aurait tellement d'autres critiques à faire sur ton code...
La confiance n'exclut pas le contrôle
En jetant un oeil rapide au code, ça c'est faux :
if(mot2 == Tab[i]){
Si tu utilises l'opérateur
==sur deux objets ce que tu compares ce sont leurs références, qui seront forcément différentes dans ton cas, pour comparer les objets par valeur il faut utilser la méthode
equals:
if(mot2.equals(Tab[i])){
Remarque : il y aurait tellement d'autres critiques à faire sur ton code...
La confiance n'exclut pas le contrôle
23 août 2015 à 14:00
Chacun sa méthode mais si ça peut me permettre de progresser, qu'aurait tu changer dans mon code ?
23 août 2015 à 14:54
Ensuite, ça ne sert à rien de faire des comparaisons à true ou false.
Si tu fais , cela n'est vrai que si x vaut true donc puisque x vaut true tu peux directement faire , de la même manière au lieu de faire , tu peux directement écrire ce qui est plus propre.
Autre chose, plus embêtant, c'est que tu déclares toutes tes variables au début du code, or il ne faudrait les déclarer qu'au moment où tu t'en sers (si tu t'en sers...)
Il y a également ton utilisation de ta première boucle while, en réalité c'est une boucle for que tu fais, alors autant l'utiliser directement en boucle for.
Au passage, cela ne sert à rien de continuer les calculs avec FauxCaract = true, puisque derrière la seule chose que tu fais c'est if (FauxCaract == false), autant faire directement un return tout de suite, puisque tu connais déjà le résultat...
Puis viennent les "valeurs magiques", ce sont par exemple les 97 et 122 qui sont en plein milieu du code, pourquoi 97, pourquoi 122... à la lecture du code ça n'a pas de sens, il vaut mieux mettre ces valeurs en constantes, ou dans ton cas utiliser des char 'a' et 'z'
Au passage, on peut mélanger les calculs avec int et char, ce n'est pas la peine de faire deux variables, une en int et l'autre en char et faire les conversions dans les deux sens.
Remarque : dans ta méthode tu ajoutes 32, je penses qu'il vaudrait mieux gérer à part le cas des majuscules car tu ne testes pas le cas où tu un caractère plus petit que 'A' ou entre 'Z' et 'a', tu lui ajoutes juste 32 et tu le rajoutes au mot sans savoir si en lui rajoutant 32 tu est bien entre 'a' et 'z'...
Question d'optimisation, mais je le laisse de côté pour l'instant, utiliser l'opérateur + sur deux String est coûteux dans une boucle, car tu vas reconstruire autant de String que tu fais de + il vaudrait mieux utiliser un StringBuilder pour faire ce genre d'opérations.
À noter aussi qu'il y a des conventions de nommages en Java, c'est pas juste pour faire joli et tu devrais apprendre les utiliser le plus tôt possible (dès aujourd'hui par exemple...)
Les noms de variables et de méthodes commencent par une minuscule.
Les conventions impliquent également de tout écrire en anglais...
Et pour terminer, je te déconseilles l'utilisation de classes non standards comme Ecriture.uneChaine(...), ça ne peut fonctionner que parce que tu ajoutes des dépendances inutiles dans ton code ou pire en bidouillant le JDK... alors qu'évidemment Java sait très bien faire cela tout seul.
Voici le même algorithme mais en prenant en compte mes remarques :
Pour info, Java gère déjà le cas des minuscules et majuscules, il suffit d'utiliser la méthode equalsIgnoreCase de la classe String pour comparer deux String et renvoyer true s'ils sont égaux aux majuscules/minuscules prêt, ce qui simplifie considérablement ton code :
23 août 2015 à 15:27
Y'avait une ou deux choses que je savais mais tu m'en apprend beaucoup !
A vrai dire je suis un peu débutante. Je vais regarder ton code plus attentivement et essayer de corriger mes projets, j'ai du boulot !
Dans tout les cas merci beaucoup pour ton aide et ta patience !