尽管循环条件正确,但数组超出范围异常

时间:2014-03-24 06:32:05

标签: java arrays indexoutofboundsexception

在下面的代码中,binchar是一个包含98个元素的char数组,nv22是一个整数变量,每次程序运行时都有不同的随机值。问题是它总是在行上给我java.lang.ArrayIndexOutOfBoundsException:98 AR [nv22-17] = binchar [1]; while循环状态l

System.out.println("Enter a message");
Scanner ss= new Scanner(System.in);
String s=ss.nextLine();
char[] ar=s.toCharArray();

len=ar.length;
int l=0;

while(l<len)
{
    for(int y=0; y<25; y++)
    {
        for (int x=0;x<20; x++)
        {
            ar[nv22-17]=binchar[l];
            l++;
        }
    }

3 个答案:

答案 0 :(得分:2)

看看这段代码:

for(int y=0; y<25; y++)
{
    for (int x=0;x<20; x++)
    {
        ar[nv22-17]=binchar[l];
        l++;
    }
}

for循环将循环25次,内for循环20次。在内部for循环内,您为每个循环增加l++,最多500,而binchar大小仅为98

表示您尝试访问binchar[98](直到500),这肯定会引发arraysindexoutofbound

答案 1 :(得分:0)

看起来你没有采取任何措施确保nv22-17&gt; ar.length。这是不可能的,但你可能不会检查0&lt; = nv22-17。

答案 2 :(得分:0)

你的数组没有索引,因为你的数组不会得到你提供的索引值 而不是while循环使用循环,循环继续循环,直到你的数组长度为len=ar.length所以语法就像for (int 1=0;i<len; i++)