2013-07-17 5 views
0

Я пытаюсь сделать программу, чтобы найти слова в поиске слов на Java. Я знаю, что это было сделано раньше, но я все еще учусь, и я сделаю это сам, и будет круче. Во всяком случае, я обнаружил, что мой основной цикл для сканирования сетки выполняется только для первого слова, которое я хочу найти. Вот часть моего кода, который находит слово:Для цикла только в первый раз

while (!word.equalsIgnoreCase("/exit")) { 
    { //Find word 
     Pair cursor = new Pair(); 
     Pair direction = new Pair(); 
     Pair location = new Pair(); 

     for (int x = 0; !whole_word_found && x<grid.length; x++) { int y = 0; 
      for (y = 0; !whole_word_found && y<grid[x].length; y++) { 
       cursor = new Pair(x,y); 
       //Lots of word-finding code, including writing whole_word_found and using the three pairs listed above 
      } 
     } 

     //Print location of word 
     if (word.length() != 1) { 
      if (whole_word_found) { 
       System.out.printf("The word is located at %s going %s.%n",location.toString(0),direction.toString(0)); 
      } else { 
       System.out.println("Sorry, word not found."); 
      } 
     } 
    } //Find word 

    //Get next word 
    System.out.println("Enter another word, or type \"/exit\" to exit."); 
    input = new Scanner(System.in); 
    word = input.nextLine().replaceAll(" ",""); 
} 

Всех переменные инициализированы, и пара является классами я взбитыми до хранения значения упорядоченной пары (х, у). Мне просто не нравилось иметь два отдельных значения для каждой пары x-y, которую я должен был сделать (хотя я технически все еще делаю).

В любом случае спасибо за помощь, если вы ее найдете.

+0

Что вы видите при прохождении кода в отладчике? –

+1

Вы можете опубликовать окружающий код? Почему вы удаляете пробелы из слова? А что такое 'whole_word_found'? –

+0

Вы сбросите 'whole_word_found' значение false в любом месте? – Axarydax

ответ

1

Необходимо выполнить сброс whole_word_found на каждой итерации цикла.

while (!word.equalsIgnoreCase("/exit")) { 
    // ... 
    whole_word_found = false; 
    for (int x = 0; !whole_word_found && x<grid.length; x++) { 
    // ... 
+0

* facepalm * Конечно! Мне нужно, чтобы всякий раз, когда я искал новое слово, возвращал значение whole_word_found в false! Хорошо, спасибо за вашу помощь, всем. Проблема решена за 15 мин. Однажды я провел дни с отсутствующей запятой. – Spaceman

+0

@ user2592589 Рад помочь. Пожалуйста, подумайте о принятии ответа. Благодарю. –

Смежные вопросы