我试图从雅虎财经中提取“来自经营活动的总现金流”数字。变量“s”可以是SP500中的任何符号。在大多数情况下,会发生所需的输出。但是,在某些情况下,比如AAPL,我无法弄清楚它的打印内容或来自哪里。
如果“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();
}
}
}
答案 0 :(得分:4)
你有一个溢出!表中的值为59,713,000。如果将它乘以1000 - line2 = Integer.parseInt(line)*1000;
,则会得到一个大于MAXINT
的数字,因此为负数。请尝试使用long
代替int
line2
。