私はJavaを学びたいと思っています。私が心に留めている基本的なプログラムのための変数とjauntを使って遊んでいます。私の目標は、他の方法で収集したデータを印刷するために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();
}
}
技術的に正当な名前であっても、名前( 'spfivehundred')を再利用しないと助けになります。あなたのreturnステートメントは関数を再び呼び出しています。 – chrylis
'return spfivehundred();'は再帰呼び出しを実行します。つまり、自身を無期限に呼び出します。 'return spfivehundred;' 'try'' catch'ブロックの前に' spfivehundred'を宣言する必要があります。 –