【问题标题】:Checking Valid URL检查有效 URL
【发布时间】:2016-02-26 19:28:29
【问题描述】:

我有一个有效 URL 的内置检查。我已插入我的检查部分。该程序是读取排名列表,然后打印/排序/搜索。代码的第一部分是我对有效 URL 的检查,第二部分是将其插入到 arrayList。如果我输入网址:https://www.ssa.gov/cgi-bin/popularnames.cgi 我会收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at rankings.RankMenu.toArrayList(RankMenu.java:160)
at rankings.RankMenu.menu(RankMenu.java:84)
at rankings.Rankings.main(Rankings.java:16)
Java Result: 1

第 160 行是:

String test2 = temp[element];

将字符串传递给ArrayList的代码是:

Scanner read = new Scanner(text.openStream());
while(count < 25){
output = read.nextLine();

如何检查 URL 以防止这种情况调整将文件插入 arrayList 的代码?这个项目总共有 223 行代码,仅在菜单中,所以除非需要帮助,否则我将全部发布。谢谢。

public boolean isValidURL(String url){
    try{
        java.net.URL file = new java.net.URL(url);
        this.text = file;
        return true;
    } catch (java.net.MalformedURLException ex) {
        return false;
    } catch (java.io.IOException ex){
        return false;
    }
}  

public void toArrayList(String string, int rank, int element){
    String[] temp = string.split("\\s+");
    String test = temp[rank];
    String test2 = temp[element];
    String[] newTemp = new String[temp.length - 2];
    int cnt2 = 0;
    for(int cnt = 0; cnt < temp.length; cnt++){
        if(temp[cnt] != temp[rank] && temp[cnt] != temp[element]){ 
            newTemp[cnt2] = temp[cnt];
            cnt2++;
        }            
    }
    String test3 = Arrays.toString(newTemp);
    textList.add(new Type(test, test2, test3));
}

【问题讨论】:

  • 哪一行是RankMenu.java:160
  • 你传递给toArrayList的参数是什么?当然,string 参数不仅仅是 URL,因为该字符串根本不包含空格,并且您的拆分最终会包含一个元素。
  • 我将在编辑中解决这两个问题

标签: java validation url invalid-url


【解决方案1】:

在使用temp[rank]temp[element] 访问数组之前检查rankelement 是否小于temp 数组的长度。

另外,检查cnt2 是否超出newTemp 的长度。

【讨论】:

  • cnt 2 不会,它被限制为始终位于 newTemp 的确切索引处,并且永远不会更大。此代码适用于除网页之外的任何类型/大小的文档。
猜你喜欢
  • 2011-04-17
  • 2011-03-12
  • 2019-09-22
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-24
  • 2010-12-20
相关资源
最近更新 更多