Задача :
Вывести на экран список из 10 городов с текущей температурой окружающей среды. Список вывести по алфавиту.
Отдельно вывести список городов, где сейчас идёт снег (или дождь, или пасмурно, или солнечно).
Также вести на экран, сколько времени выполнялась программа.
Мой ход решения :
Выбрал сайт : http://www.travel.ru/weather/russia/
Подключил библиотеку : jsoup
Не получается :
Вытащить из тега tr имя города и поместить его в переменную.
Вытащить прогноз погоды и поместить его в переменную.
В общем, Хьюстон, у нас проблемы.
Мой код :
package devjatnadcat;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class Devjatnadcat1{
public static void main(String[] args) throws IOException {
List<Article> articleList = new ArrayList<>();
Document doc = Jsoup.connect("http://travel.ru/weather/russia/").get();
Elements trElements = doc.getElementsByAttributeValue("class", "b-table_row b-forecast");
trElements.forEach(trElement ->{
Element
});
}
}
class Article{
private String url;
private String name;
public Article(String url,String name){
this.url=url;
this.name=name;
}
public String getUrl(){
return url;
}
public void setUrl(){
this.url=url;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
}
Не очень понимаю в чём проблема, но если сделать так:
trElements.forEach(trElement ->{
Elements elementsByClass = trElement.getElementsByClass("b-table_cell"); // выбираем элементы по классу b-table_cell
System.out.print(elementsByClass.get(0).text() + " "); // первая колонка - Город
// Парсим вторую колонку
Element element = elementsByClass.get(1);
String temp = element.getElementsByClass("b-forecast_temp").text(); // температура
String precipitation = element.getElementsByClass("b-forecast_description").text(); // осадки
System.out.println(temp + " " + precipitation);
});
То вывод будет:
Ялта +1 / -1 снег
Иркутск -8 / -17 ясно
Красная Поляна +4 / 0 возможен дождь
Якутск -34 / -36 облачно
Мурманск -1 / -4 переменная облачность
Выборг +2 / +1 снег
Салехард -18 / -25 переменная облачность
Южно-Сахалинск -9 / -19 облачно с прояснениями
Ростов Великий -4 / -6 облачно
Армавир +1 / 0 облачно
Дальше можно идти глубже и разбирать каждую колонку, вытаскивать градусы и осадки отдельно. Про то как работать с JSOUP можно почитать тут.
/*
*Вывести на экран список из 10 городов с текущей температурой окружающей среды.
Список вывести по алфавиту.
Отдельно вывести список городов, где сейчас идет снег(или дождь, или пасмурно,
или солнечно).
Также вести на экран сколько времени выполнялась программа
*/
package devjatnadcat;
/**
*
* @author Марат
*/
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Devjatnadcat1{
public static void main(String[] args) throws IOException {
long m = System.currentTimeMillis()/1000;
List<Article> articleList = new ArrayList<>();
Document doc = Jsoup.connect("http://travel.ru/weather/russia/").get();
Elements trElements = doc.getElementsByAttributeValue("class", "b-table_row b-forecast");
trElements.forEach(trElement ->{
Elements elementsByClass = trElement.getElementsByClass("b-table_cell"); // выбираем элементы по классу b-table_cell
System.out.print(elementsByClass.get(0).text() + " "); // первая колонка - Город
// Парсим вторую колонку
Element element = elementsByClass.get(1);
String temp = element.getElementsByClass("b-forecast_temp").text(); // температура
String precipitation = element.getElementsByClass("b-forecast_description").text(); // осадки
System.out.println(temp);
});
System.out.println("");
trElements.forEach(trElement ->{
Elements elementsByClass = trElement.getElementsByClass("b-table_cell"); // выбираем элементы по классу b-table_cell
System.out.print(elementsByClass.get(0).text() + " - "); // первая колонка - Город
// Парсим вторую колонку
Element element = elementsByClass.get(1);
String temp = element.getElementsByClass("b-forecast_temp").text(); // температура
String precipitation = element.getElementsByClass("b-forecast_description").text(); // осадки
System.out.println(precipitation);
});
System.out.println("Время выполнения : "+((double) (System.currentTimeMillis() - m)));
}
}
class Article{
private String url;
private String name;
public Article(String url,String name){
this.url=url;
this.name=name;
}
public String getUrl(){
return url;
}
public void setUrl(){
this.url=url;
}
public String getName(){
return name;
}
public void setName(){
this.name=name;
}
}
Вот игровой цикл, перед тем как рисовать, блокируем канвас, рисуем и потом разблокируем и видим кадрКак я понял принцип такой
Пробую писать на espresso with cucumberИ в одном из примеров наткнулся на такую строчку: