Bienvenue au cours de la ville de la connaissance sur la programmation en Java. Je suis Cliff Brozo, je suis votre instructeur. Et dans la leçon d'aujourd'hui, nous allons apprendre à déboguer un programme. Si vous vous souvenez, c'est le programme que nous venons d'examiner celui qui impliquait l'instruction switch et les instructions if et même en retirant le mois calendaire. Dans ce programme, j'ai inséré un tas d'erreurs qui n'étaient pas là la dernière fois que nous l'avons compilé exécutons-le cette fois et voyons ce qui se passe. La première erreur que j'obtiens pointe vers la ligne 17 et en bas, il est écrit main.java 17 et il me dit que j'ai fait une erreur que ce n'est pas une déclaration. Et la déclaration qui l'intéresse est scan.close. Dans ce cas particulier, ce que nous devons comprendre, c'est que close est une fonction et toutes les fonctions doivent se terminer avec des parenthèses ouvertes et fermées. Donc le fait que ce ne soit pas une déclaration signifie vraiment que je dois entrer juste après le mot fermer et mettez entre parenthèses ouvertes et fermées. Maintenant, l'astuce pour déboguer un programme est de ne faire qu'un seul changement à la fois. Même si tu vois des choses qui ne vont pas, attendez que le compilateur vous dise que vous avez fait une erreur. Si vous apportez trop de modifications, vous pourriez finir par changer quelque chose qui est correct et le transformer en quelque chose qui n'est pas correct. Nous faisons donc un changement à la fois. Recompilons. Il pointe maintenant vers la ligne 52, et je descends jusqu'à la ligne 52, et il est dit différence == votre mois - mois + 1. Dans cette erreur, nous devons nous rappeler qu'il y a une différence entre le signe égal et le signe égal égal. Les tests égaux égaux pour l'égalité tandis que le seul signe égal met une valeur dans le côté gauche de l'équation. Dans ce cas, la seule fois où j'utiliserais un double signe égal est avec une instruction if ou une instruction while dans tous les autres cas, Je veux utiliser un seul signe égal que je vais prendre le résultat de ce calcul c'est ton mois moins le mois, plus un, et placez-le dans la différence variable. Et la façon dont je le fais, c'est avec un seul égal. Comme nous l'avons dit, un changement et une recompilation, Java ligne 66 dit que c'est une erreur et il a atteint la fin du fichier lors de l'analyse. Que se passe t-il ici c'est qu'il me manque une accolade proche et l'IDE essaie de nous aider en mettant ces lignes verticales dans qui nous aident à aligner ces parenthèses. Et si je suis celui-ci jusqu'au bout, Je peux voir que cette fermeture correspond à ma routine principale String Args statique publique. Regardez à la ligne quatre et j'ai une ouverture et il n'y a pas de clôture correspondante. Alors que le compilateur passait par et en vérifiant tout le code, il a atteint la fin du fichier. Et il n'a pas trouvé d'accolade étroite. Alors je vais en mettre un et je pense que je vais en avoir fini car il ne reste qu'une erreur, mais je me trompe. Je l'ai mis et il dit toujours la même chose. Hum, c'est une chose intéressante car je viens de corriger ce code et cela m'a donné la même erreur. Lorsque cela se produit, vous devez revenir en arrière et regarder et vérifier pour vous assurer que tous vos crochets ouverts ont des parenthèses fermées correspondantes. Je vais monter en haut du programme. J'en ai un ouvert, j'en ai deux ouverts, lignes quatre et ligne six, la ligne 23 a un open pour l'instruction switch. Et je suis ces lignes vers le bas et je vois qu'il n'y a pas de fin pour l'instruction switch. Donc Java ne le sait pas, ce que Java sait c'est qu'il y a juste une quantité inégale de parenthèses fermées. Et il dit que j'ai atteint la fin du fichier et je n'ai pas trouvé la parenthèse finale. Alors je vais en mettre un et encore une fois, je pense que j'ai fini. Oh, non, je ne le suis pas. J'ai corrigé cette erreur et maintenant j'en ai un, deux, trois, quatre, cinq, six, sept huit, neuf, presque chaque ligne devient une erreur. Et c'est là que vous commencez à paniquer. J'ai 20 erreurs alors que j'en ai juste une. Comment cela peut-il arriver? Eh bien, l'ordinateur ne sait pas les détails de chaque ligne jusqu'à ce qu'elle se termine parcourir tout le programme, en vous assurant que toutes vos routines sont ouverts et fermés correctement. Donc, quand il a compilé la dernière fois et m'a dit que j'avais une erreur, J'ai mis cette erreur et maintenant tout va bien, Je vais entrer et regarder chaque ligne individuellement. C'est donc maintenant ce que nous devons faire. Ma première ligne me parle et dit, ligne trois, classe publique principale. La classe principale est publique, il doit être déclaré dans un fichier nommé main Java. Eh bien, c'est une indication ici, principal Java est une indication du nom des fichiers. Mais dans mon cas, j'ai un fichier nommé Main.java avec majuscule M. Donc ça me dit que ce M doit être en majuscule. Je vais donc mettre un M majuscule. Comme je l'ai dit, même si je sais que j'ai 19 autres erreurs, je vais recompiler car un seul changement peut produire plusieurs erreurs. Maintenant ça me ramène à la première ligne et il a dit, l'erreur ne peut pas trouver le symbole. Et le petit pointeur ici cela dit, c'est là que ça s'est gâché. Il cherchait un symbole la classe de scanner. Et dans ce cas particulier, eh bien, je n'ai pas orthographié scanner avec un S majuscule et la capitalisation est importante. Je fais un S majuscule, recompile à nouveau. Maintenant ça me dit, la ligne 15 me dit qu'il ne trouve pas le symbole Scanner.nextInt, et il regarde et il n'y a pas de scanner. J'ai nommé mon scan de scanner, pas Scanner. Le code correct est donc Scan.nextInt.