¿Cómo hacer que el escáner Java reconozca la entrada en blanco?

Tengo problemas para que mi programa responda a entradas vacías. Por ejemplo, supongamos que quería solicitar al usuario que ingrese un valor por dinero con el tipoBigDecimal así como un tipo de moneda. Así es como se ve el programa en cuestión.

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();

    ...
}

Así que aquí, una entrada como100.00 USD, funciona bien.

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

Una entrada comoASDF USD da como resultado el mensaje de error.

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

Pero, ¿cómo fuerzo al programa a responder a entradas en blanco, ya sea presionando inmediatamente la tecla de retorno o ingresando un montón de espacios en la primera línea? Por ejemplo:

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





1000.00 USD
$1000.00 USD ≈ ¥6701.70 CNY

En el ejemplo anterior, el usuario puede presionar la tecla de retorno indefinidamente hasta que se ingrese algo legible (válido o inválido).Quiero implementar alguna forma de verificar si el usuario presionó la tecla de retorno sin ingresar nada significativo.

Otro resultado que no sé cómo explicar es si el usuario ingresa SOLO el valor monetario, luego presiona [return] varias veces antes de ingresar finalmente la moneda.

Ejemplo:

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



USD
$100.00 USD ≈ ¥670.17 CNY

¿Cómo hago para que el programa le pregunte al usuario algo comoPlease specify the currency: después de ingresar un valor numérico y el usuario presiona [return]? Algo como

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

Pude lograr la funcionalidad anterior cambiando la parte después del bloque try-catch a:

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

Pero al usar este método, el programa pierde la capacidad de permitir que el usuario ingrese ambosmoneyInput ycurrencyType en una línea, como en el primer ejemplo. (Y de nuevo, todavía existe el problema de poder presionar [regresar] indefinidamente para cada una de estas indicaciones hasta que finalmente se ingrese algo legible).

Gracias por leer y perdón por la larga publicación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta