Я протестировал ваш код в онлайн-среде IDE, и он сработал, затем я протестировал на своей машине и получил ту же ошибку, что и вы, затем я снова протестировал, но для запятой использовал запятую (,) вместо точек (.)и это сработало. InputMismatchException выбрасывается, потому что объект Scanner использует локаль по умолчанию JVM для анализа входного значения, а когда он отличается от ожидаемого, он вызывает исключение.
Вы можете передатьлокаль для сканера, который использует. в качестве десятичного разделителя:
input.useLocale(Locale.US);
или просто используйте (,) при вводе значений.
Кроме того, в вашем коде есть еще одна ошибка в последнем printf:
System.out.printf("%nBMI = %d", BMI);
Вы должны использовать% f для чисел с плавающей запятой вместо% d, который используется для целых чисел. Вы можете найти больше информации о том, как форматировать числовой вывод в следующей документации .