String[] k=o.split(":");
String filename=k[0];
String filesize=k[1];
System.out.println(k.length);
System.out.println(filename);
System.out.println(filesize);
为什么这句String filesize=k[1];要报数组越界错误呢,长度为2应该没问题啊

解决方案 »

  1.   

    说明没有分割对呀,也就是说:没有找到。你要确认下你的:是全角还是半角。
    如果是一样的话,应该没有问题。
    你可以这么写:String[] k=o.split(":");
    System.out.println(k.length);
    String filename=k[0];
    System.out.println(filename);
    String filesize=k[1];
    System.out.println(filesize);这样至少能把length和filename打印出来
      

  2.   

    Exception in thread "Thread-4" java.lang.ArrayIndexOutOfBoundsException: 1
    at com.qq.server.model.ClientThread.run(ClientThread.java:94)
    at java.lang.Thread.run(Unknown Source)
    这就是那个异常94行就是String filesize=k[1];简直郁闷之极
      

  3.   

    是的打印一切正常,可就是这String filesize=k[1];要报错
      

  4.   

    你当然不能直接用数组下标了,如果数组长度没那么多的话就不对了。你确定那个 k.length 是等于 2?把代码改成这样:String[] strs = str.split(":");
    for(int i = 0; i < strs.length; i++) {
        System.out.println(strs[i]);
    }
      

  5.   

    你是有个字符串是这样的吧?
    String o="yyyyyyy:";
    改成这样试试
    String[] k=o.split(":",2);