"Vänner" episod Suggestor (8 / 17 steg)
Steg 12: GetRandom metod
Denna metod är verkligen kött av slumpmässiga episod förslag funktion i programmet.
Programmet kontrollerar först, se till att minst en säsong kryssrutan markeras. Om denna kontroll inte var på plats, programmet skulle försöka att slumpmässigt generera episoder på obestämd tid eftersom ingen av de genererade episoderna kommer att matcha en rutig säsong (eftersom det finns inga markerade säsonger). Om ingen säsonger är markerade, getRandom skriver ut en varning till användaren och returnerar matrisen {1,1}, som motsvarar till piloten.
Om minst en säsong är markerat flyttar getRandom till generera ett slumpmässigt förslag. En int matris är instansieras för att hålla förslaget, och en boolesk variabel "hasValidSuggestion" definieras som anger huruvida förslaget hålls i "förslag" är giltig (inte har nyligen föreslagits).
Hur while loop avsnitt fungerar är: getRandom kommer att generera nya episod förslag tills en av två fall uppfylls: antingen den genererade förslaget har inte föreslagits nyligen och är thus giltig (ange värdet för "hasValidSuggestion" till true) eller 1000 slumpmässigt episoder har genererats utan en giltig förslag som uppstår, som anger att alla möjliga avsnitt i markerade säsonger redan har valts. Om du är nyfiken på varför jag valde 1000 gånger, lämna en kommentar och jag kan förklara mig själv där. :)
Efter tag loop, jag först kontrollera att se om while loop stoppades eftersom "count" nått 1000 innan ett giltigt förslag genererades. Jag tar detta som att alla avsnitt i de markerade säsongerna har föreslagits och användaren måste välja andra säsonger eller Återställ "bevakade" listan. I det här fallet förslag ligger till Pilot och en varning är tryckt för användaren att lyssna innan du fortsätter.
Slutligen, om den "if(count == 1000)" tillstånd inte var uppfyllt, sedan tag loop stoppades eftersom ett giltigt förslag genererades. getRandom anropar metoden markSuggested att markera i matrisen "bevakade" att denna episod har nu föreslagits, och returnerar förslag för visning.