【问题标题】:ArrayIndexOutOfBoundsException for String.split()String.split() 的 ArrayIndexOutOfBoundsException
【发布时间】:2015-08-03 15:08:15
【问题描述】:

这是从包含roll,name,age,street,city,zipcode 形式的学生详细信息的文件中读取输入的代码。 其中很少有值可以是null

对于以下代码,我收到java.lang.ArrayIndexOutOfBoundsException: 1

代码如下-

    BufferedReader br=new BufferedReader(new FileReader(fileName));
    while((line=br.readLine())!=null){

        split_array=line.split("\\,");

        String roll1=split_array[0];
        String name=split_array[1];// This is the line which causes Exception
        String age1=split_array[2];
        String street=split_array[3];
        String city=split_array[4];
        String zip=split_array[5];
    }

【问题讨论】:

  • 你为什么用\,而不是,分开?
  • 给我看看你的fileName的内容
  • 您确定您正在阅读的所有行都至少有 5 个逗号吗?您可能会在文件末尾发现一个额外的空白行,这可能是导致此异常的原因。
  • 你不需要\\,你可以用,
  • fileName的内容是这样的-line1- 4,Neha,10,Camp,Pune,411023 line2- 5,Seema,,,, line3- 8,Neha,,,Mumbai, line4 - 9,Meena,9,Nariman Point,Mumbai,411045 line5- 10,Chaitali,3,MGRoad,Mumbai,411032

标签: java arrays split


【解决方案1】:
  • 您应该使用分隔符来分隔每一列。
  • 在使用索引之前检查长度,因为您说某些数据可能会丢失,因此有时索引会超出范围。
  • 假设有时用户不会提供所需格式的数据,这始终是一种很好的做法。

【讨论】:

    【解决方案2】:

    如果文件中间有空行,则应该

    if (line.equals(""))
        continue;
    

    if (split_array.length <= 1)
         continue;
    

    拨打split()之后

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-12
      • 1970-01-01
      • 2011-12-03
      相关资源
      最近更新 更多