Как заставить сканер Java признать пустой ввод?

У меня проблемы с тем, чтобы моя программа реагировала на пустые данные. Например, скажем, я хотел предложить пользователю ввести значение для денег с типомBigDecimal а также тип валюты. Вот как выглядит рассматриваемая программа.

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

    System.out.print("Enter the amount of money " 
                             + "and specify currency (USD or CNY): ");

    // initialize variable moneyInput
    BigDecimal moneyInput;

    // check if moneyInput is numeric
    try {
         moneyInput = input.nextBigDecimal();
    } catch (InputMismatchException e){
        System.err.println("InputMismatchException: non-numeric value");
        return;
    }

    // specify currency of moneyInput
    String currencyType = input.next();

    ...
}

Итак, здесь, как вход100.00 USD, работает отлично.

Enter the amount of money and specify currency (USD or CNY): 100.00 USD
$100.00 USD ≈ ¥670.17 CNY

Вход какASDF USD соответственно приводит к сообщению об ошибке.

Enter the amount of money and specify currency (USD or CNY): ASDF USD
InputMismatchException: non-numeric value

Но как заставить программу реагировать на пустые вводы, немедленно нажав клавишу возврата или введя несколько пробелов в первой строке? Например:

Enter the amount of money and specify currency (USD or CNY): 





1000.00 USD
$1000.00 USD ≈ ¥6701.70 CNY

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

Другой результат, который я не знаю, как учесть, - это если пользователь вводит ТОЛЬКО денежное значение, а затем нажимает [return] несколько раз, прежде чем, наконец, ввести валюту.

Пример:

Enter the amount of money and specify currency (USD or CNY): 100.00



USD
$100.00 USD ≈ ¥670.17 CNY

Как мне заставить программу подсказать пользователю что-то вродеPlease specify the currency: после ввода числового значения и нажатия пользователем [return]? Что-то вроде

Enter the amount of money and specify currency (USD or CNY): 100.00
Please specify the currency: USD
$100.00 USD ≈ ¥670.17 CNY

Мне удалось достичь вышеуказанной функциональности, изменив деталь после блока try-catch на:

input.nextLine();
System.out.print("Please specify the currency: ");
String currencyType = input.nextLine();

Но используя этот метод, программа теряет возможность позволить пользователю вводить обаmoneyInput а такжеcurrencyType в одну строку, как в первом примере. (И снова, все еще существует проблема, заключающаяся в возможности бесконечно нажимать [return] для каждого из этих приглашений до тех пор, пока что-нибудь читаемое не будет наконец введено).

Спасибо за чтение и извините за длинный пост.

Ответы на вопрос(1)

Ваш ответ на вопрос