ArrayIndexOutofBounds异常?

时间:2014-07-20 06:42:05

标签: java

我的代码是:

public static void main(String args[]) throws Exception
{

   int i=0;
   textedit<String> q=new textedit<String>();
   Scanner sc=new Scanner(System.in);
   int linestoread=sc.nextInt();
   String[] a12=new String[linestoread];
   for(i=0;i<linestoread;i++);
{
   a12[i]=sc.nextLine(); //Line 169
   q.insert(a12[i]);
}
   for(String s1:q)
   System.out.println(s1);

}
}

上述代码会在ArrayIndexOutofBounds变量输入后立即抛出linestoread异常。第169行会抛出异常。我不知道错误是什么用代码。

我刚刚发布了导致问题的部分代码。

3 个答案:

答案 0 :(得分:4)

注意:

--------------------------V
                          V
for(i=0;i<linestoread;i++);
{
   a12[i]=sc.nextLine(); //Line 169
   q.insert(a12[i]);
}

分号是无关的,应该删除

for循环不执行任何操作,并且块跟随执行一次,变量i设置为比最后一个元素的索引多一个,从而导致异常。

答案 1 :(得分:1)

您的代码相当于:

for(i=0;i<linestoread;i++) { } //This will be executed until `i` 
                               //reach linestoread
{
   a12[i]=sc.nextLine();       //Here, `i = linestoread`, which is OOB
   q.insert(a12[i]);
}

;循环后删除for。循环结束后,您尝试访问等于i的{​​{1}},这将导致此异常。

答案 2 :(得分:-4)

for循环应该是

for(i = 0; i&lt; linestoread - 1; i ++)

但不是

for(i = 0; i&lt; linestoread; i ++)//导致数组索引超出最后一个值的绑定异常。

并且plz不会在语法之后放置分号:)