你如何正确地返回变量

时间:2016-11-11 22:18:54

标签: java class variables methods

我正在尝试学习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();

    }

}

1 个答案:

答案 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);
}