Java中的变量范围 - 问题

时间:2014-11-03 04:25:51

标签: java

好的,所以我遇到了对象范围的问题。我现在正在使用Jsoup,这是代码:

//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();
}

好的,所以我创建了一个名为的Document对象 网站,我需要添加一定数量的零,因为该人如何制作网站,没有问题。但是,当我尝试使用site.select(任何东西)时,我不能,因为该对象是在if构造中定义的。

另外,我无法在if之外初始化它,它不起作用,因为我得到一个重复的错误抛出。请告诉我有一个解决方法,因为我搜索并搜索无效,我不想将其余的程序3次放入不同的ifs ...

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

将声明移到if else if else链接之外,例如

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();
}

或者您可以构建网址然后连接一次,

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