2016-11-11 2 views
-1

나는 자바를 배우려고 노력하고 있으며, 염두에두고있는 기본 프로그램을 위해 jaunt와 함께 변수를 가지고 놀고 있습니다. 내 목표는 기본 방법을 사용하여 다른 방법으로 수집 한 데이터를 인쇄하는 것입니다. 나는 그 대답이 눈부시게 분명하고 자바 문서를 읽었지만 여전히 작동하지 않는 이유에 대해 혼란 스럽다. 프로그램을 실행하면 원하는 데이터를 인쇄하지 않고 실행되는 것 같습니다. 또한 spfivehundred 메소드에 sysout 문을 추가하면 spfivehundred 메소드가 무한 반복되고 기본 메소드에서 나오기를 원하는 데이터를 인쇄하는 것으로 나타납니다.어떻게 제대로 변수를 반환합니까

import com.jaunt.*; 
import com.jaunt.component.*; 

public class mainthread { 

    public static void main(String[] args) { 
     spfivehundred(); 
     double spfivehundreded = spfivehundred(); 
     System.out.println(spfivehundreded); 
    } 

    public static double spfivehundred() { 
     UserAgent userAgent = new UserAgent(); 

     try { 
      userAgent.visit("http://www.investing.com/indices/us-spx-500"); 
      String spfivehundredget = userAgent.doc.findFirst(
        "<span class=\"arial_26 inlineblock pid-166-last\">") 
        .getText(); 
      double spfivehundred = Double.parseDouble(spfivehundredget.replace(
        ",", "")); 

     } catch (JauntException e) { 

      System.err.println(e); 
     } 
     return spfivehundred(); 

    } 

} 
+2

기술적으로 합법적 인 경우에도 이름 ('spfivehundred')을 다시 사용하지 않으면 도움이됩니다. return 문이 함수를 다시 호출하고 있습니다. – chrylis

+4

'return spfivehundred();'는 재귀 호출을 수행합니다. 즉, 무한정 호출합니다. 그것은'return spfivehundred;이어야합니다''try'' catch' 블록 전에'spfivehundred'를 선언해야합니다. –

답변

1

첫째, 당신은 당신의 spfivehundred 방법에 재귀 있습니다 - 당신은 당신이 구문 분석 한 값을 반환합니다. 메소드가 실패하거나 예외가 발생하면 값. 현재 하나 개의 결과 내가 모든 것을 spfivehundred 이름을하지 않을 드롭

다음
public static double spfivehundred() { 
    UserAgent userAgent = new UserAgent(); 

    try { 
     userAgent.visit("http://www.investing.com/indices/us-spx-500"); 
     String spfivehundredget = userAgent.doc.findFirst(
       "<span class=\"arial_26 inlineblock pid-166-last\">") 
       .getText(); 
     return Double.parseDouble(spfivehundredget.replace(
       ",", "")); 
    } catch (JauntException e) { 
     System.err.println(e); 
    } 
    return Double.NaN; // <-- no result. 
} 

뭔가 같은;

public static void main(String[] args) { 
    // spfivehundred(); 
    double result = spfivehundred(); 
    System.out.println(result); 
} 
+0

더 나은 "예외"반환 값은'Double.NaN'입니다. – Andreas

+0

빠른 응답을 보내 주셔서 감사합니다! 한 가지 질문은 "반환 -1"입니다. 말의 의미. 왜 -1일까요? –

+0

@Andreas 예. 그게 나아. –

관련 문제