Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将ArrayIndexOutOfBoundsException的错误抛出?_Java - Fatal编程技术网

Java 如何将ArrayIndexOutOfBoundsException的错误抛出?

Java 如何将ArrayIndexOutOfBoundsException的错误抛出?,java,Java,这是我的字符串: String csvFile = "Screenname,Firstname,Email,Timezone,Organization,Password,Lastname,Middlename,Gender,Birthdate\n" + "Test01,Test01,test01@.khalibre.com,GMT+8,Khalibre,12345,test,test,M,3/8/1980\n" + "Sok Dar

这是我的字符串:

        String csvFile = "Screenname,Firstname,Email,Timezone,Organization,Password,Lastname,Middlename,Gender,Birthdate\n"
            + "Test01,Test01,test01@.khalibre.com,GMT+8,Khalibre,12345,test,test,M,3/8/1980\n"
            + "Sok Dara,Dara,test02@khalibre.com,GMT-7,Khalibre,12345,Sok,Dara,,1980-d1-25\n"
            + "Test03,,test03@khalibre.com.kh,GMT+1,Khalibre,12345,test,test,M,2/2/1980\n"
            + ",Test04,test04@khalibre.com,GTM-8:00,Khalibre,12345,test,test,F,\n";
这一主要方法:

boolean firstLine = true;
    String[] readLineCSVs = csvFile.split("\n");
    for (String readLineCSV : readLineCSVs) {
        rows++;
        if (firstLine) {
            firstLine = false;
        } else {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Readdata rd = new Readdata();
            String[] csvData = readLineCSV.split(csvSplitBy);
            int count =0;
            while(csvData[count++]!=null){
                System.out.println(count);
            }
            System.out.println(csvData[0]);
            System.out.println(csvData[1]);
            System.out.println(csvData[2]);
            System.out.println(csvData[3]);
            System.out.println(csvData[4]);
            System.out.println(csvData[5]);
            System.out.println(csvData[6]);
            System.out.println(csvData[7]);
            System.out.println(csvData[8]);
            System.out.println(csvData[9]);
        }
错误如下所示:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at demo002.D2_F_003.readData(D2_F_003.java:38)
    at demo002.D2_F_003.main(D2_F_003.java:247)
如何引发此异常?

如果您询问如何修复错误,这看起来非常可疑:

boolean firstLine = true;
String[] readLineCSVs = csvFile.split("\n");
for (String readLineCSV : readLineCSVs) {
    rows++;
    if (firstLine) {
        firstLine = false;
    } else {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Readdata rd = new Readdata();
        String[] csvData = readLineCSV.split(csvSplitBy);
        int count =0;

        try{
        while(csvData[count++]!=null){
            System.out.println(count);
        }
        System.out.println(csvData[0]);
        System.out.println(csvData[1]);
        System.out.println(csvData[2]);
        System.out.println(csvData[3]);
        System.out.println(csvData[4]);
        System.out.println(csvData[5]);
        System.out.println(csvData[6]);
        System.out.println(csvData[7]);
        System.out.println(csvData[8]);
        System.out.println(csvData[9]);
      }
      catch (ArrayIndexOutOfBoundsException e){
                    e.printStackTrace();
            }
    }
int count =0;
while(csvData[count++]!=null){
    System.out.println(count);
}
我不确定空检查的目的是什么。String的split方法不会返回包含null元素的数组

从异常消息(ArrayIndexOutOfBounds 10)判断,您的数组只有10个元素,但您正在尝试访问索引10(请记住,数组索引从0到长度-1)。您需要限制计数,以便它不会增加到超过最后一个索引

这将至少停止异常:

int count = 0;
while(count < csvData.length && csvData[count++] != null) {
    System.out.println(count);
}
int count=0;
while(count
抛出新的ArrayIndexOutOfBoundsException()
如果想抛出异常,只需
抛出它即可!我想每个人都会误解你的问题。你想知道如何解决这个问题,因为你得到了从程序中抛出的异常,对吗?@kai我想知道,他真的想修复导致该异常的问题吗?如果我不得不冒险猜测,我会说错误在while循环中。在不知道第32行是什么的情况下,我不能确定。我假设他做了空检查,因为他认为如果count大于csvData.length,数组将返回空值,但他得到的不是这个,而是这个异常。@kai是的,我刚才想知道他们是否这样认为。
int count = 0;
while(count < csvData.length && csvData[count++] != null) {
    System.out.println(count);
}