2014-11-03 67 views
1

好吧,所以我遇到了對象範圍的問題。我使用Jsoup現在這裏是代碼:Java中變量的範圍 - 問題

//Website is /001.shtml, so adding count to the string wouldn't work. 
//This is why I have the ifs 

if (count < 10) 
{ 
Document site = Jsoup.connect(url + "00" + count).get(); 
} 
else if (count < 100) 
{ 
    Document site = Jsoup.connect(url + "0" + count + ".shtml").get(); 
} 
else 
{ 
    Document site = Jsoup.connect(url + count + ".shtml").get(); 
} 

好了,所以我創建了一個名爲 網站上的文檔對象,我需要補充,因爲人員如何使網站,零一定量的不問題。但是,當我嘗試使用site.select(任何東西),我不能因爲對象是在if結構中定義的。

此外,我不能初始化它如果,它不工作,因爲我得到了重複的錯誤拋出。請告訴我有一個解決這個,因爲我已經搜索和搜索無濟於事,我不想將其餘的程序3次放入不同的ifs ...

+1

您應該使用字符串格式。像這樣會使輸入3個數字:String.format(「%03d」,numberValueHere) – user2272115 2014-11-03 04:32:25

+0

你是什麼意思的「它不工作?」請提供錯誤消息幷包含觸發錯誤的最小程序。 – 2014-11-03 05:10:09

回答

1

只需聲明site外面在if..else塊:

Document site; 
if (count < 10){ 
    site = Jsoup.connect(url + "00" + count).get(); 
} else if (count < 100) { 
    site = Jsoup.connect(url + "0" + count + ".shtml").get(); 
} else { 
    site = Jsoup.connect(url + count + ".shtml").get(); 
} 

或者,你可以使用嵌套三元運營商:

Document site = Jsoup.connect(
     count < 10 ? url + "00" + count 
     : count < 100 ? url + "0" + count + ".shtml" 
     :    url + count + ".shtml" 
    ).get(); 

如果我是正確的,你的代碼有缺陷和count < 10情況下丟失+ ".shtml",那麼最好的解決方法是:

Document site = Jsoup.connect(url + String.format("%03d.shtml", count)).get(); 
+0

我已經嘗試過,並且由於網站的重複而無法使用。 – 2014-11-03 04:30:56

+0

@RobertStanton - 網站有哪些重複?請注意,在我的代碼中,當'site'在'if'塊中使用時,我已經消除了類型名稱。 – 2014-11-03 04:33:43

+0

+1在聲明中不分配'null',所以如果在使用它之前忘記正確初始化它,編譯器會發出警告。 – 2014-11-03 05:16:26

1

移動的if否則外面的聲明,如果鏈條,像

Document site = null; 
if (count < 10) { 
    site = Jsoup.connect(url + "00" + count + ".shtml").get(); // was missing shtml. 
} else if (count < 100) { 
    site = Jsoup.connect(url + "0" + count + ".shtml").get(); 
} else { 
    site = Jsoup.connect(url + count + ".shtml").get(); 
} 

或者你可以建立的URL,然後連接一次一樣,

String urlStr = url + String.format("%03d", count) + ".shtml"; 
Document site = Jsoup.connect(urlStr).get(); 
+0

我已經試過,不幸的是它不工作,我不明白爲什麼。 – 2014-11-03 04:30:36