Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ЗАДАНИЕ 3а
- fun main(args: Array<String>) {
- val client = HttpClient.newBuilder().build();
- val request = HttpRequest.newBuilder()
- .uri(URI.create("https://api.openweathermap.org/data/2.5/onecall?lat=59.8944&lon=30.2642&units=metric&exclude=current,minutely,hourly,alerts&lang=ru&appid=f757d9051f5a4383ec2be735e9ccc330"))
- .build();
- val response = client.send(request, HttpResponse.BodyHandlers.ofString());
- // Klaxon - библиотека для преобразования gson в объекты
- val result = Klaxon().parse<Answer>(response.body())
- // ЗАДАНИЕ 1 : нахождение дня с минимальной разницей "ощущаемой" и фактической температуры ночью за ближайшие 5 дней
- val durationNightTemp = mutableMapOf<Long, Double>()
- for (i in 0..4) {
- val date: Long = result?.daily?.get(i)?.dt ?: 0L
- val realTemp: Double = result?.daily?.get(i)?.temp?.night ?: 0.0
- val feelTemp: Double = result?.daily?.get(i)?.feels_like?.night ?: 0.0
- val duration: Double = abs(realTemp - feelTemp)
- durationNightTemp[date] = duration
- }
- val findMin = durationNightTemp.maxByOrNull { it.value }
- // умножаем дату на 1000, так как api возвращает секунды
- println("Дата: ${Date(findMin?.key!! * 1000)}")
- println("Разница между ощущаемой и фактической температуры ночью (градусы Цельсия): ${findMin?.value}")
- // ЗАДАНИЕ 2 : нахождение максимальной продолжительности светового дня за ближайшие 5 дней
- val daylightHours = mutableMapOf<Long, Long>()
- for (i in 0..4) {
- val date: Long = result?.daily?.get(i)?.dt ?: 0L
- val sunset: Long = result?.daily?.get(i)?.sunset ?: 0L
- val sunrise: Long = result?.daily?.get(i)?.sunrise ?: 0L
- val duration: Long = sunset - sunrise
- daylightHours[date] = duration
- }
- val findMax = daylightHours.maxByOrNull { it.value }
- // умножаем дату на 1000, так как api возвращает секунды
- println("Дата: ${Date(findMax?.key!! * 1000)}")
- println("Продолжительность светового дня (секунды): ${findMax?.value}")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement