2014-10-29 7 views
0

Я пишу программу проверки орфографии, которая попросит пользователя слова и сравнит ее со списком слов в массиве, который я сделал.Выйти из цикла while, если пользователь вводит QUIT

Эта программа не должна заканчиваться до тех пор, пока пользователь не наберет quit.

Так что мой вопрос: что бы я поставил while(>> here <<), который закончил бы программу, как только пользователь наберет quit вместо ввода другого слова. Слово quit отсутствует в массиве.

Вот мой код для цикла while до сих пор (еще не сделано, но это меня задевает, когда я проверяю это, и цикл не заканчивается на выходе, так что это то, что мне нужно сделать в первую очередь).

String quit = "quit"; 
//this is only declared as "quit" to get the loop to run for testing 

while(quit.equals("quit")) { 

    System.out.println("Please every a word or QUIT to exit"); 
    String guess = input.nextLine(); 

    for(int i = 0; i < words.length; i++) { 

     if(guess.equals(words[i])) { 

      System.out.println("That word is spelled correctly."); 
     } 

     else { 

      System.out.println("That word is not spelled correctly."); 
      System.out.println("Would you like to add it to the dictionary? (Y/N)"); 
     } 
    } 
} 

Если вы предложить другой способ сделать это, это не петля в то время как, хотя я ценю это, она должна быть петля, а для целей школы.

+0

Вы говорите типа 'QUIT', но' равна() 'не игнорировать случай. Кроме того, если вы хотите, чтобы цикл запускал _until_, кто-то вроде quit, вы, вероятно, захотите использовать '!' В условии ... –

+1

Используйте цикл «do-while» и убедитесь, что значение «value» не равно 'довольно' ...' do {...} while (! guess.equalsIgnoreCase ("quit")); ' – MadProgrammer

ответ

1

Ваше состояние всегда верно. Если вы хотите, чтобы реагировать на пользователь, набрав в "quit" при вводе новой догадки, вы можете сделать это с бесконечной петлей и break, как это:!

while (true) { 
    System.out.println("Please every a word or QUIT to exit"); 
    String guess = input.nextLine(); 
    if (quit.equalsIgnoreCase(guess)) { 
     break; 
    } 
    for(int i = 0; i < words.length; i++) { 
     ... 
    } 
} 
+0

Я бы предложил нам quit.equalsIgnoreCase (предположим), поэтому обработка нечувствительна к регистру. – Gremash

+0

@ Gremash Спасибо, 'equalsIgnoreCase' действительно будет лучше. – dasblinkenlight

+0

@ Гремаш Да, я бы вернулся и исправил эти мелочи. У меня есть привычка писать, основываясь на том, как я буду использовать программу, в этом случае я бы знал, чтобы всегда использовать QUIT. Но я изменил его. Благодарю. :) –

-1

Моими неправильно, он будет работать лучше с»= "

"quit.compareTo (догадка)! = 0" в ваше время

+0

Это не выгодно использовать 'equals'. – khelwood

0

Использование Do-While Loop вместо простого цикла While.

код выглядит следующим образом:

String quit = "quit"; 
//this is only declared as "quit" to get the loop to run for testing 

    do { 

     System.out.println("Please every a word or QUIT to exit"); 
     String guess = input.nextLine(); 

     for(int i = 0; i < words.length; i++) { 

      if(guess.equals(words[i])) { 

       System.out.println("That word is spelled correctly."); 
      } 

      else { 

       System.out.println("That word is not spelled correctly."); 
       System.out.println("Would you like to add it to the dictionary? (Y/N)"); 
      } 
     } 
    } 

    while(!quit.equals("quit")); 
+0

@AndyFedoroff, пожалуйста, прекратите добавлять форматирование кода для акцента, см. Http://meta.stackexchange.com/q/135112/186983 И прекратите вкладывать все в кавычки – Matsemann

0

Ваш цикл, пока будет продолжать идти, пока вы не измените свою Струнный бросить на что-то другое, чем «бросить курить». Вот пример:

while(quit.equals("quit")) { 

    System.out.println("Please every a word or QUIT to exit"); 
    String guess = input.nextLine(); 

    for(int i = 0; i < words.length; i++) 
    { 

     if(guess.equals(words[i])) 
     { 
      System.out.println("That word is spelled correctly."); 
     } 
     if(guess.equals("quit") { 
      quit = "something_else"; 
     } 
     else 
     { 
      System.out.println("That word is not spelled correctly."); 
      System.out.println("Would you like to add it to the dictionary? (Y/N)"); 
     } 
} 
} 
0

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

System.out.println("Please enter a word or QUIT to exit"); 
String guess = input.nextLine(); 

while (!guess.equalsIgnoreCase("quit")) { 
    for(int i = 0; i < words.length; i++) { 
     if(guess.equals(words[i])) { 
      System.out.println("That word is spelled correctly."); 
     } else { 
      System.out.println("That word is not spelled correctly."); 
      System.out.println("Would you like to add it to the dictionary? (Y/N)"); 
     } 
    } 
    System.out.println("Please enter a word or QUIT to exit"); 
    String guess = input.nextLine(); 
} 
0

Используйте ниже Состояние:

if(StringUtils.equalsIgnoreCase(guess,"QUIT")) { 
    System.out.println("Quitting the loop"); 
    return 
} 
Смежные вопросы