Помогите пройти проверку, выходит из программы при вводе exit в любой момент, что ему еще нужно не могу понять.

Задание 9
Сегодня мы займемся командой ExitCommand.
1. Реализуйте следующую логику в команде ExitCommand:
1.1. Спросить, действительно ли пользователь хочет выйти - варианты <y,n>.
1.2. Если пользователь подтвердит свои намерения, то попрощаться с ним.

Это всё хорошо, но бывают случаи, когда срочно нужно прервать операцию, например, если пользователь ошибся с выбором операции.
Для этого у нас есть InterruptOperationException.
2.Реализуйте следующую логику:
2.1. Если пользователь в любом месте ввел текст 'EXIT' любым регистром, то выбросить InterruptOperationException.
2.2. Найдите единственное место, куда нужно вставить эту логику. Реализуйте функционал в этом единственном методе.
3. Заверните тело метода main в try-catch и обработайте исключение InterruptOperationException.
Попрощайтесь с пользователем в блоке catch используя ConsoleHelper.

Exit

package com.javarush.test.level26.lesson15.big01.command;

import com.javarush.test.level26.lesson15.big01.ConsoleHelper;
import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException;

import java.io.IOException;

class ExitCommand implements Command{
    @Override
    public void execute() throws InterruptOperationException, IOException {
        ConsoleHelper.writeMessage("Are you sure?");
        String answer = ConsoleHelper.readString();
        if (answer.equals("y")){
            ConsoleHelper.writeMessage("Bye (in command)");
        }
    }
}

CashMashine

 package com.javarush.test.level26.lesson15.big01;

import com.javarush.test.level26.lesson15.big01.command.CommandExecutor;
import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException;

import java.io.IOException;
import java.util.Locale;

public class CashMachine {
    public static void main(String[] args) throws IOException {
        try {
            Locale.setDefault(Locale.ENGLISH);
            Operation operation;
            do {
                operation = ConsoleHelper.askOperation();
                CommandExecutor.execute(operation);
            } while (operation != Operation.EXIT);

        } catch (InterruptOperationException e){
            ConsoleHelper.writeMessage("Bye! (in exception)");
        }
    }
}

ConsoleHelper

package com.javarush.test.level26.lesson15.big01;

import com.javarush.test.level26.lesson15.big01.exception.InterruptOperationException;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ConsoleHelper {
    private static BufferedReader reader =  new BufferedReader(new InputStreamReader(System.in));

    public static void writeMessage(String message) {
        System.out.println(message);
    }

    public static String readString() throws InterruptOperationException {

        String inputString = null;
        try {
            inputString = reader.readLine();
        } catch (IOException e) {}
        if (inputString.equalsIgnoreCase("exit")){
            throw new InterruptOperationException();
        }
        return inputString;
    }

    public static String askCurrencyCode() throws IOException, InterruptOperationException {
        writeMessage("Enter currency code");
        String currencyCode = readString();

        while (currencyCode.length() != 3){
            writeMessage("Currency code wrong. Try again.");
            currencyCode = readString();
        }

        return currencyCode.toUpperCase();
    }

    public static String[] getValidTwoDigits(String currencyCode) throws IOException, InterruptOperationException {
        String[] validTwoDigits = new String[2];
        int check = 0;
        while (check == 0) {
            writeMessage("Enter, through the gap, sum and quantity of note, integer and positive");
            try{
                validTwoDigits = readString().split(" ");
                int intSum = Integer.parseInt(validTwoDigits[0]);
                int intNote = Integer.parseInt(validTwoDigits[1]);
                if (intSum <= 0 && intNote <= 0)
                    throw new IllegalArgumentException();
                check = 1;
            } catch (IllegalArgumentException e) {
                writeMessage("Incorrect data");
            } catch (ArrayIndexOutOfBoundsException a) {
                writeMessage("Incorrect data");
            }
        }

        return validTwoDigits;
    }

    public static Operation askOperation() throws InterruptOperationException {
        Operation operation = null;
        while (operation == null) {
            writeMessage("Enter code of operation");
            operation = Operation.getAllowableOperationByOrdinal(Integer.parseInt(readString()));
        }
        return operation;
    }

}

задан 13 Ноя '16, 02:14

LJ_'s gravatar image

LJ_
445
одобрено: 40%

закрыто 13 Сен, 16:48

AndyRad's gravatar image

AndyRad
13.1k29

А тут так и нужно, читайте условие.

(13 Ноя '16, 08:33) LJ_

1.2. Если пользователь подтвердит свои намерения, то попрощаться с ним.А если не подтвердит?У вас в любом случает происходит выход

(13 Ноя '16, 02:37) Andrey05

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" AndyRad 13 Сен, 16:48


убрал все ИОЭксепшены обработал по другому исключения. Теперь неизвестная ошибка на сервере, вроде как лишних импортов нет, рекурсий нет. Ни где не валится, что бы не ввели. Спасайте

ссылка

опубликован 13 Ноя '16, 20:59

LJ_'s gravatar image

LJ_
445
одобрено: 40%

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3,808
×1,630
×435
×185

Задан: 13 Ноя '16, 02:14

Просмотров: 238 раз

Отредактирован: 13 Сен, 16:48