Étape 12 : La méthode getRandom
Cette méthode est vraiment de la viande de la fonctionnalité de suggestion aléatoire épisode du programme.
Tout d’abord, le programme vérifie pour s’assurer que la case à cocher au moins un de la saison est marquée. Si cette vérification n’était pas en place, le programme tenterait de générer de façon aléatoire des épisodes indéfiniment parce qu’aucun des épisodes générés correspondra à une saison vérifiée (parce qu’il n’y a pas vérifié de la saison). Si aucuns saison ne sont vérifiées, getRandom imprime un avertissement à l’utilisateur et retourne le tableau {1, 1}, ce qui correspond au pilote.
Si au moins une saison est vérifiée, getRandom passe à générer une suggestion au hasard. Un tableau d’int est instancié pour tenir la suggestion et une variable booléenne « hasValidSuggestion » est définie pour indiquer si la suggestion qui s’est tenue en « suggestion » est valide (n'a pas été récemment suggéré).
La façon dont la boucle while section travaille est : getRandom va générer de nouvelles suggestions épisode jusqu'à ce que l’un des deux cas est rencontré : la suggestion générée n’a pas été suggérée récemment et est donc valide (définissant la valeur de « hasValidSuggestion », true) ou 1000 épisodes aléatoires ont été générés sans une suggestion valide qui se produisent, indiquant que tous les épisodes possibles dans les saisons sélectionnés ont déjà été sélectionnés. Si vous êtes curieux de savoir pourquoi j’ai choisi 1000 fois, laisser un commentaire et je peux m’expliquer là. :)
Après le tout en boucle, j’ai tout d’abord de vérifier pour voir si la boucle while a été arrêté car « count » atteint 1000 avant qu’une suggestion valable a été générée. Je prends cela signifie que tous les épisodes des saisons sélectionnés ont été suggérées et l’utilisateur doit sélectionner les autres saisons ou réinitialiser la liste « surveillée ». Dans ce cas, la suggestion est définie pour le pilote et un avertissement est imprimé pour l’utilisateur d’écouter avant de continuer.
Enfin, si le "if(count == 1000)" condition n’est pas remplie, alors le tout en boucle a été arrêtée car une suggestion valable a été générée. getRandom appelle la méthode markSuggested pour marquer dans le tableau « surveillé » que cet épisode particulier a maintenant été suggéré et retourne la suggestion pour l’affichage.