2014-11-03 75 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