0

有効な URL のチェックが組み込まれています。チェックの一部を挿入しました。プログラムは、ランク付けされたリストを読み取り、印刷/ソート/検索することです。コードの最初の部分は有効な URL のチェックで、2 番目の部分はそれを arrayList に挿入しています。URL を入力すると: 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));
}
4

1 に答える 1

0

およびを使用してアクセスする前に、 が配列rankelement長さより短いことを確認してください。temptemp[rank]temp[element]

また、cnt2の長さを超えるかどうかを確認しnewTempます。

于 2016-02-26T19:36:57.123 に答える