Я столкнулся с очень странной проблемой в моем коде. У меня есть простой преобразователь температуры, в котором пользователь вводит температуру в градусах Цельсия, а после нажатия «Преобразовать» отображается температура в градусах Фаренгейта. Если пользователь не вводит что-то допустимое (что-либо, кроме числа или десятичного числа), отображается диалоговое окно с ошибкой. Код:
btnConvert.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String tempFahr = (String) enterDegreesC.getText();
double tempF = Double.valueOf(tempFahr);
double tempFConverted = tempF * 1.8 +32;
displayDegreesF.setText(tempFConverted + " Farenheit");
}
catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(frmTemperatureConverter, "Please Enter a Number.", "Conversion Error", JOptionPane.ERROR_MESSAGE);
}
}
});
Довольно прямолинейный и простой код, который хорошо работает, за исключением одного. Когда я ввожу комбинацию из числа, за которым следуют буквы "f" или "d", диалоговое окно с ошибкой не отображается, а температура в градусах Фаренгейта рассчитывается с использованием цифры перед буквой. Это ТОЛЬКО происходит с «d» и «f» (и «D» и «F»), а не с любой другой буквой. Я в тупике на этом. Почему только эти две буквы, помещенные после цифры, не вызывают исключения и продолжают вычисления?