Вы проверяете, является ли int
буквой или нет:
Character.isLetter(amount)
Если это int, например, 65
, этот метод вернет true, потому что в коде ascii число 65
представляет букву a
Это, вероятно, источник ваших проблем.
Вы можете безопасно удалить эту проверку, потому что, если после звонка на Integer.parseInt
вы можете быть уверены, что amount
- это номер (в противном случае он перейдет в раздел catch( NumberFormatException )
ниже как Вы, возможно, уже заметили.