我正在尝试学习Java并且正在玩变量以及我想到的基本程序的短途旅行。我的目标是使用main方法打印出我在其他方法中收集的数据。我确信答案非常明显,我已经阅读了Java文档,但我仍然对为什么这不起作用感到困惑。当我运行程序时,它似乎运行而不打印我想要的数据。此外,如果我向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();
}
}
答案 0 :(得分:1)
首先,您在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.
}
然后你现在放弃一个结果和我不会将所有内容命名为spfivehundred
;
public static void main(String[] args) {
// spfivehundred();
double result = spfivehundred();
System.out.println(result);
}