java.lang.ArrayIndexOutOfBoundsException如何处理-7

时间:2014-12-04 09:54:51

标签: java

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

4 个答案:

答案 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和获取列表。