java.lang.ArrayIndexOutOfBoundsException 如何删除此异常
public static void main(String[] args) throws ClassNotFoundException, SQLException {
FileUpdate obj = new FileUpdate();
obj.run();
}
public void run() throws SQLException, ClassNotFoundException {
String csvFile = "/home/IMRAN/file.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
try {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date dateobj = new Date();
String dt = df.format(dateobj);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Rforms", "root", "root12");
Statement st = con.createStatement();
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] emp = line.split(cvsSplitBy);
// if (emp[0] != null && emp[1] != null ) {
// for(int x = 0; x < emp.length; x++) {
String t = (String) emp[0].trim();
String t2 = (String) emp[1].trim();
}
}
答案 0 :(得分:0)
问题不明确...当您尝试访问不存在的对象(数组元素)时,java.lang.ArrayIndexOutOfBoundsException会出现。例如,你的数组是7个元素长,你试图访问元素[8] 你确定emp [0]不是空的吗?
答案 1 :(得分:0)
以下代码告诉emp
应始终包含2个或更多元素。
否则你得到java.lang.ArrayIndexOutOfBoundsException
。
...
String t = (String) emp[0].trim();
String t2 = (String) emp[1].trim();
...
答案 2 :(得分:0)
在访问其元素之前,您应该检查emp数组的长度。
if(emp!=null && emp.length==2){
String t = (String) emp[0].trim();
String t2 = (String) emp[1].trim();
}
答案 3 :(得分:0)
您好我们假设您已正确放置CSV文件和内容,在这种情况下,您可以根据下方进行条件检查
String[] emp = line.split(cvsSplitBy);
if (emp.length > N) {
String t = (String) emp[0] !=null ?emp[0].trim():"";
String t2 = (String)emp[1] !=null ?emp[1].trim():"";
}
请注意,您知道从该行获取的数值。
或者您可以使用List。这将彻底解决你的问题。
List lst= Arrays.asList(emp);
请参阅java文档,了解如何使用List和获取列表。