繁体   English   中英

Java中的变量范围-问题

[英]Scope of Variables in Java — issue

好吧,我在对象范围方面遇到了问题。 我现在正在使用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();
}

好的,所以我创建了一个名为site的Document对象,由于该人创建网站的方式,我需要添加一定数量的零,这没问题。 但是,当我尝试使用site.select(anything)时,却不能,因为该对象是在if构造中定义的。

此外,我无法在if之外对其进行初始化,因为我抛出了重复错误,因此无法正常工作。 请告诉我有一个针对此的修复程序,因为我进行了搜索并且搜索无济于事,并且我不想将程序的其余部分放入不同的ifs中3次...

只需在if..else块之外声明site

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

将声明移到if else 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();
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM