2015-06-27 2 views
0

Я пытаюсь вытащить цифру «Общий денежный поток от операционной деятельности» от Yahoo Finance. Переменной «s» может быть любой символ в SP500. По большей части происходит нужный выход. Однако в некоторых случаях, как и для AAPL, я не могу понять, что он печатает или откуда он пришел.Извлечение неизвестного значения с помощью Jsoup

Если «s» - A, выход 711000000. Исправить.

Если «s» - это AA, выход 1674000000. Исправить.

Однако, если «s» - AAPL, выход - -416542144. Не знаю, откуда это взялось.

public class CashFlowStatement { 
String cashFromOperatingActivities = "Total Cash Flow From Operating Activities"; 

public CashFlowStatement(String s) { 
    String cashFlowStatementURL = ("https://finance.yahoo.com/q/cf?s="+s+"+Cash+Flow&annual"); 
    String cashFlowStatementTableName = "table.yfnc_tabledata1"; 
    boolean foundLine = false; 

    String line; 
    int line2; 

    try { 
     Document doc = Jsoup.connect(cashFlowStatementURL).get(); 

     for (Element table : doc.select(cashFlowStatementTableName)) { 
      for (Element row : table.select("tr")) { 
       if(foundLine == false) { 
        Elements tds = row.select("td"); 
        for(int j = 0; j < tds.size() - 1; j++) { 
         if(tds.get(j).text().equals(cashFromOperatingActivities)) { 
          line = tds.get(j+1).text().replaceAll(",",""); 
          line = line.substring(0,(line.length())-2); 
          line2 = Integer.parseInt(line)*1000; 
          System.out.println(line2); 
          foundLine = true; 
         }         
        } 
       }  
      } 
     } 
    } 
    catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
    catch (NumberFormatException ex) { 
     ex.printStackTrace(); 
    } 
} 

}

ответ

4

У вас есть OVERFLOW! Значение из таблицы составляет 59 713 000. Когда вы умножаете его на 1000 - line2 = Integer.parseInt(line)*1000;, вы получаете число, превышающее MAXINT, таким образом отрицательное значение. Попробуйте использовать long вместо int за line2.

Смежные вопросы