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);
}