String[] temp=new String[3];
Scanner scSys=new Scanner(System.in);
String sys=scSys.next();
temp=sys.split(" ");
for(int i=0;i<3;i++){
System.out.println(temp[i]);
available[i]=Integer.parseInt(temp[i]);
}
想问一下这段代码为什么会出现异常呢? java.lang.ArrayIndexOutOfBoundsException

解决方案 »

  1.   

    temp=sys.split(" ");
    你这一重新赋值,temp的长度就不是上面定义的3了,
    准确的说,它已经不是原来的对像了。
    所以for(int i=0;i<3;i++)改为
    for(int i=0;i<temp.length;i++){
      

  2.   

    temp=sys.split(" "); 之后再 System.out.println(temp.length); 看看就知道了
      

  3.   


    打印看看就知道了 问题出在你的3上 
    temp=sys.split(" "); 
    temp=sys.split(",");
    这两返回的数组长度是不同的 打出来你就明白了 
      

  4.   

    显然越界了嘛,你输入的是啥
    另外available这个数组有没有问题--signature--------------------------
    http://www.purji.com/qklist.htm
      

  5.   

    因为 String sys = scSys.next();  当遇到第一个空格时就返回了,只能接收到了第一个空格前面的字符,例如,如果你输入:aa bb cc  。只能接受到aa ,所以会报异常Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。