У меня возникла очень странная проблема в моем коде. У меня есть простой температурный преобразователь, в котором пользователь вводит температуру в градусах Цельсия, а после нажатия "Преобразовать" отображается температура в Фаренгейте. Если пользователь не вводит что-либо действительное (все, что не является числом или десятичным), отображается диалоговое окно с ошибкой. Код:
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" ), а не с другой буквой. Я в тупике. Почему только эти две буквы, помещенные после цифры, вызывают исключения, которые не будут выбрасываться, и расчет для продолжения?