Не получается преобразовать строку в int после парсинга. Java
Написал код, который парсит температуру с сайта. Потом захотел преобразовать эту температуру в int. Но перепробовав разные функции преобразования, у меня все время выскакивает ошибка. При этом если самому создать String и потом преобразовать в int, то все работает.
Метод для парсинга и преобразования и ошибку прикрепляю ниже:
public int getTemperatureFromGisMeteo() {
String currentTemperature = "1";
try {
Document document = Jsoup.connect("https://www.gismeteo.ru/weather-novosibirsk-4690/").get();
String titleElement = document.title();
Element element = document.getElementsByClass("unit unit_temperature_c").first();
currentTemperature = element.text();
} catch (Exception e) {
e.printStackTrace();
}
return Integer.parseInt(currentTemperature);
}
Ошибка следующая:
Exception in thread "main" java.lang.NumberFormatException: For input string: "−22"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at ParsingData.getTemperatureFromGisMeteo(ParsingData.java:22)
at WeatherStation.main(WeatherStation.java:15)
Ответы (1 шт):
В полученной строке в переменной currentTemperature не обычный минус, а юникодный "\u2212", Integer.parseInt такое не понимает. Для сравнения в строке поиска на сайте https://unicode-table.com введите минус с клавиатуры (получите https://unicode-table.com/ru/002D/) и скопируйте и вставьте минус из текста ошибки (получите https://unicode-table.com/ru/2212/)
Сделайте перед конвертацией в Integer замену на обычный минус:
return Integer.parseInt(currentTemperature.replace("\u2212", "-")