0
for(int i=0;i<charset.size();i++)
{
    for(int j=0;i<charset.size();j++)
    {
        for(int k=0;k<charset.size();k++)
        {
            String plaintext= charset.get(i)+charset.get(j)+charset.get(k);


            String hashtext=CreateHash.returnString(plaintext);

            BufferedWriter bw = new BufferedWriter(new FileWriter("/root/MD5List.txt", true)); //opens file
            bw.write(plaintext+" = "+hashtext);
            bw.newLine();
            bw.close();
        }
    }
}

arraylistサイズは10です。このプログラムを実行すると、スタックトレースが取得されます。

スレッド"main"の例外java.lang.IndexOutOfBoundsException:インデックス:10、サイズ:10 at java.util.ArrayList.rangeCheck(ArrayList.java:571)at java.util.ArrayList.get(ArrayList.java:349)at MD5HashTable.Hash.main(Hash.java:57)Java結果:1

変数kは明らかにのサイズよりも小さいのでarraylist、なぜこのエラーが発生するのですか?

4

2 に答える 2

9

タイプミスがあるようです。ループでは、jテストしていますi

i<charset.size();

だから増加しj続けます。あなたはテストしたいj

j<charset.size();
于 2013-01-05T04:31:04.090 に答える
0
Try to use 


  for(int i=0;i<charset.size();i++)
       {
        for(int j=0;j<charset.size();j++)
        {
于 2013-01-05T04:29:12.900 に答える