我的代码是:
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行会抛出异常。我不知道错误是什么用代码。
我刚刚发布了导致问题的部分代码。
答案 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不会在语法之后放置分号:)