можно ли преждевременно завершить программу из метода

Nov 25 2020

Я делаю простую «игру», в которой пользователю задают вопрос, и он должен дать правильный ответ, чтобы двигаться дальше. Это код, который у меня есть на один из вопросов.

public static void Mascot() {
    Scanner console = new Scanner(System.in);
    System.out.println("what Is our school mascot?");
    String Tony = console.nextLine();
    String b = Tony;
    Scanner scanner= new Scanner(b);
    if (scanner.hasNext("tiger")){
        System.out.println("Good, next riddle.");
    } else{ 
    }
    scanner.close();
    console.close();
}

Я хочу, чтобы оператор if не учитывал регистр и возвращал true, если тигр вообще вводится в сканер. как будто кто-то может ввести в сканер полное предложение, и если слово тигр где-нибудь встречается, оно возвращается как истина. но если в сканер вводится тигр (или любой другой неправильный ответ на любой другой вопрос, я хочу, чтобы программа остановилась. и не переходила к следующему вопросу.

Ответы

1 VinodJayachandran Nov 26 2020 at 05:45

Здесь нужно отметить пару вещей.

  1. Продолжать игру или нет, в идеале должно контролироваться вызывающим методом. Вызывающий метод должен принять решение на основе возвращаемого значения true или false.
  2. Чтобы разместить (1) подпись метода, необходимо изменить. Это не может быть пустым. Это должно быть логическое значение.
  3. Вам не нужен второй объект сканера, чтобы проверить, есть ли в нем тигр.

Пожалуйста, проверьте, помогает ли вам этот код

public static boolean Mascot() {
        Scanner console = new Scanner(System.in);
        try {
            System.out.println("what Is our school mascot?");
            String b = console.nextLine();
           
            if (b.toLowerCase().contains("tiger")){
                System.out.println("Good, next riddle.");
                return true;
            } else{
                return false;
            }
        }
        catch(Exception e) {
            System.out.println("Exception Occurred");
        }
        finally {
            console.close();
        }
        return false;
    }