2013-02-12 3 views
1

Jsoup를 사용하여 특정 팀에서 하키 선수의 통계를 가져 와서 하나의 문자열에 넣는 프로그램이 있습니다. 각 플레이어의 통계를 자신의 문자열로 얻을 수 있도록 라인을 분할하고 싶습니다. 이것은 내가 가지고있는 코드 및 설명 :문자열을 여러 줄로 나눕니다.

public static void main(String[] args) throws IOException { 


    Document doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get(); 

    for (Element table : doc.select("table.tablehead")) { 
     for (Element row : table.select("tr")) { 
      Elements tds = row.select("td"); 
      if (tds.size() > 6) { 
       String a = tds.get(0).text() + ":" + tds.get(1).text() + " GOALS: " + tds.get(2).text() + " ASSISTS: " + tds.get(3).text() + " POINTS: " + tds.get(4).text() + " PLUS/MINUS: " + tds.get(5).text() + " PIM: " + tds.get(6).text(); 
       System.out.println(a); 
      } 
     } 
    } 
} 

출력은 당신이 그것을 제공하는 처음 세 줄 수 있습니다 아이디어 제공하기 위해, 여러 줄을 제공합니다

PLAYER:GP GOALS: G ASSISTS: A POINTS: PTS PLUS/MINUS: +/- PIM: PIM 
Matt Read, C:13 GOALS: 5 ASSISTS: 4 POINTS: 9 PLUS/MINUS: 2 PIM: 2 
Brayden Schenn, C:12 GOALS: 2 ASSISTS: 6 POINTS: 8 PLUS/MINUS: 3 PIM: 5 

을하면 줄의 시작 =

: 라인 = 브레이든 쉔의 시작 내가 포함 된 문자열을 확인하려면

Matt Read, C:13 GOALS: 5 ASSISTS: 4 POINTS: 9 PLUS/MINUS: 2 PIM: 2 

을 : 매트 읽기 내가 포함 된 문자열을 만들고 싶어

Brayden Schenn, C:12 GOALS: 2 ASSISTS: 6 POINTS: 8 PLUS/MINUS: 3 PIM: 5 

답변

3

코드를 이해하지 못한다면 이미 거의 모든 작업을 수행 한 것 같습니다. 각 줄은 모든 루프 반복마다 String a 변수에 있습니다. a의 각 할당을 외부로 저장하면됩니다. 초기 for 루프 전에 ArrayList<String>을 인스턴스화하고 System.out.println(a);으로 전화하기 전에 변수 a을 추가하십시오. for 루프를 종료 한 후 ArrayList에는 각각 해당하는 개별 String이 포함되어야합니다.

public static void main(String[] args) throws IOException { 

    List<String> list = new ArrayList<String>(); // THIS LINE IS NEW 

    Document doc = Jsoup.connect("http://espn.go.com/nhl/team/stats/_/name/phi/philadelphia-flyers").get(); 

    for (Element table : doc.select("table.tablehead")) { 
     for (Element row : table.select("tr")) { 
      Elements tds = row.select("td"); 
      if (tds.size() > 6) { 
       String a = tds.get(0).text() + ":" + tds.get(1).text() + " GOALS: " + tds.get(2).text() + " ASSISTS: " + tds.get(3).text() + " POINTS: " + tds.get(4).text() + " PLUS/MINUS: " + tds.get(5).text() + " PIM: " + tds.get(6).text(); 

        list.add(a); // THIS LINE IS NEW 

       System.out.println(a); 
      } 
     } 
    } 

     // at this point, variable "list" contains each String assigned to "a" above. 

} 
+0

감사합니다. 왜 내가 그걸 생각할 수 있었는지 모르겠다. – MaxK

1

당신은 scanner.nextLine() 메서드를 호출하여 텍스트 (또는 직접 파일)의 몸 중 개별 라인을 끌어 스캐너 클래스를 사용할 수 있습니다. 새 줄 문자가 나올 때까지 입력 문자열을 검사하여 모든 문자를 반환합니다.

1

당신은, 대신 라인을 인쇄의.에 플레이어에 대한 정보를 저장하는

를 스캐너, 더욱 바람직 목록, 심지어는 HashMap을 사용하여 선호하는 유형을 선언하고이 문자열을 저장할 수 있습니다.

관련 문제