我正在尝试从雅虎财经获取“经营 Activity 产生的总现金流量”数据。变量“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();
}
}
}
最佳答案
你有溢出!表中的值为 59,713,000。当您将其乘以 1000 时 - line2 = Integer.parseInt(line)*1000;
您会得到一个大于 MAXINT
的数字,因此是负值。尝试使用 long
而不是 int
来表示 line2
。
关于java - 使用 Jsoup 检索未知值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094649/