Мне дали задание на моем курсе «Введение в информатику»: заставить пользователя вводить любое слово, пока он не угадает секретное слово. Как только они получат секретное слово, система скажет «Стоп!». Пока у меня есть одна попытка пользователя, и я хочу, чтобы программа продолжала цикл до тех пор, пока пользователь не введет правильное слово. Мне действительно нужна помощь, это то, что у меня есть.

import java.util.Scanner;

public class HW2
{
  public static void main(String[] args)
  {
    String input;    //The users input

  // New Scanner for keyboard input
  Scanner keyboard = new Scanner(System.in);

  //Tell the user to guess the word
  System.out.print("Guess the secret word: ");
      input = keyboard.nextLine();

  if(input.equalsIgnoreCase("college"))
  {
    System.out.print("Stop !");
  }
  }
}
0
kingtrellz 11 Окт 2019 в 02:26
3
Вам нужен цикл.
 – 
Andy Turner
11 Окт 2019 в 02:28
1
Вопрос ясен и хорошо объяснен, так что эти отрицательные голоса немного сложны. Однако вам следует сначала изучить основы программирования, прежде чем задавать вопросы, поскольку многие ответы вы получите, прочитав книги / учебные пособия. Как сказал @AndyTurner, вам нужен простой цикл, из которого вы прерветесь, когда пользователь найдет секретное слово.
 – 
Badda
11 Окт 2019 в 03:31

3 ответа

Все, что вам нужно, это цикл do-while.

    import java.util.Scanner;

public class HW2
{
    public static void main(String[] args)
    {
        String input;    //The users input
        boolean hasGuessedCorrectly = false;

        // New Scanner for keyboard input
        Scanner keyboard = new Scanner(System.in);

        //Tell the user to guess the word
        do
        {
            System.out.print("Guess the secret word: ");
            input = keyboard.nextLine();

            if (input.equalsIgnoreCase("college"))
            {
                hasGuessedCorrectly = true;
                System.out.print("Stop !");
            }
        } while (!hasGuessedCorrectly);
    }
}
0
Khalil Kabara 11 Окт 2019 в 02:37

Для этой задачи можно использовать цикл do-while:

import java.util.Scanner;

public class Main {

    private static final String SECRET_WORD = "college";

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);

        do {
            System.out.print("Guess the secret word: ");
        } while (!SECRET_WORD.equalsIgnoreCase(keyboard.nextLine()));

        System.out.println("Stop!");
    }
}

Live демо

0
MartinBG 11 Окт 2019 в 03:21

Рассмотрим цикл while:

import java.util.Scanner;

public class HW2
{
  public static void main(String[] args)
  {
    String input = "";    //The users input

    // New Scanner for keyboard input
    Scanner keyboard = new Scanner(System.in);

    // The below code is run until the secret word is guessed.
    while (!"college".equalsIgnoreCase(input))
    {

      //Tell the user to guess the word
      System.out.print("Guess the secret word: ");
      input = keyboard.nextLine();

   /* if(input.equalsIgnoreCase("college"))
      {
        System.out.print("Stop !");
      } This code is no longer necessary, as we have put the stop
        condition in the while loop declaration. */
    }

    // This only runs after the loop has finished
    System.out.println("Stop !");
  }
}
0
MAO3J1m0Op 11 Окт 2019 в 04:06
Не возникла бы та же проблема, если бы input был равен нулю и был передан в качестве параметра?
 – 
MAO3J1m0Op
11 Окт 2019 в 03:11
1
Would the same problem not arise if input was null and passed as a parameter? - Нет, as Метод equalsIgnoreCase просто возвращает false при вызове с аргументом null.
 – 
MartinBG
11 Окт 2019 в 03:57