在下面的代码中,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++;
}
}
答案 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++)