#java
#java
Вопрос:
Я хочу выполнить простую операцию из значений в хэше следующим образом:
boolean f=Float.valueOf(entry.getValue().toString())>15;
Однако, когда я запускаю это, я получаю следующую ошибку:
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
at java.lang.Float.parseFloat(Float.java:451)
at java.lang.Float.valueOf(Float.java:416)
at Algorithms.HRMDx.HRMDiag(HRMDx.java:76)
Я думаю, это как-то связано с тем, как я сравниваю значение с плавающей точкой с числом, но я не могу понять, почему. Нужно ли мне также преобразовывать целое число в число с плавающей точкой — я думал, что преобразование будет неявным
Комментарии:
1. Вы пропустили имя исключения и сообщение!!
2. Если бы вы посмотрели на опубликованную вами трассировку стека, вы бы увидели, что ошибка возникает из-за метода с именем «parseFloat».
3. Это буквально все, что я получаю. Имя исключения отсутствует
4. Я предполагаю, что проблема с Float.valueOf не в логике сравнения
5. Исключения и трассировки стека существуют по определенной причине. Прочитайте документы об ошибке, которую вы получаете
Ответ №1:
Происходит то, что это выражение:
Float.valueOf(entry.getValue().toString())
выдает исключение. Вы не включили исключение и его сообщение в материал, который вы нам показали, но, вероятно NumberFormatException
, это вызвано попыткой проанализировать что-то, что не является правильно сформированным числом.
Вам нужно выяснить, что возвращается, entry.getValue().toString()
чтобы вы могли понять, почему синтаксический анализ не выполняется.
Вам также может потребоваться добавить некоторый код для восстановления после «неправильного ввода» в этом поле или что бы это ни было…
Я думал, что преобразование будет неявным
Это не имеет ничего общего с преобразованием int
в float
(или наоборот). Если valueOf
вызов действительно вернулся, то ваш 15
будет преобразован в 15.0
, и >
тест будет работать.
Комментарии:
1. ДА. Появилось не-число, и я не заметил. Еще раз спасибо
Ответ №2:
Ошибка не имеет ничего общего с преобразованием между int и float или сравнением.
Как ясно указано в вашей трассировке стека, это ошибка при разборе значения с плавающей точкой из строки.
Поскольку никто из нас не имеет ни малейшего представления о том, что такое «запись», невозможно сказать, почему синтаксический анализ завершается неудачей.
Комментарии:
1. Это не ответ
2. Нет? Почему это не ответ?
3. Ваш первоначальный не ответ был «Поскольку никто из нас не имеет ни малейшего представления о том, что такое «запись», невозможно сказать, почему синтаксический анализ завершается неудачей».
4. Перед вашими изменениями это выглядело как что угодно, но не как ответ
5. Извините, я преждевременно нажал add и не понял, что ваш комментарий относится к этому короткому времени до редактирования: D Спасибо!