public String compWord() throws IOException, ClassNotFoundException
{
// Local constants
final int MAX_COUNT = 8;
// Local variables
BufferedReader reader = new BufferedReader(new FileReader("dictionary.txt")); // Create a new BufferedReader, looking for dictionary.txt
List<String> lines = new ArrayList<String>(); // New ArrayList to keep track of the lines
String line; // Current line
Random rand = new Random(); // New random object
String word; // The computer's word
/********************* Start compWord *********************/
// Start reading the txt file
line = reader.readLine();
// WHILE the line isn't null
while(line != null)
{
// Add the line to lines list
lines.add(line);
// Go to the next line
line = reader.readLine();
}
// Set the computers word to a random word in the list
word = lines.get(rand.nextInt(lines.size()));
if(word.length() > MAX_COUNT)
compWord();
// Return the computer's word
return word;
}
Насколько я понимаю, это должно быть только возвращающее слова менее 8 символов? Любая идея, что я делаю неправильно? Оператор if должен помнить compWord, пока слово не будет меньше 8 символов. Но почему-то я все еще получаю слова от 10-15 символов.Почему мои слова не выходят менее 8 символов?
Но не следует ли начинать снова, прежде чем он даже что-нибудь вернет? – trevordavies095
@ tdrunner95: Да, он начинается снова, выбирает случайное слово, возможно, снова рекурсивно, а затем возвращает слово. Затем вы игнорируете это возвращаемое значение и возвращаете все, что было выбрано первым. Я думаю, вам нужно немного почитать о рекурсии ... –
Спасибо. Мой профессор едва коснулся рекурсии. Я посмотрю на это больше. – trevordavies095