2014-12-04 1 views
-6

java.lang.ArrayIndexOutOfBoundsException 을 당신이 액세스 할 때이java.lang.ArrayIndexOutOfBoundsException 처리-7하는 방법

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

어제 나 오늘 같은 질문을 던졌다고 생각합니다. 나는 같은 질문을 한 다음 csv 파일 내용을 다시 붙여 넣으라는 질문을 할 것입니다. – SMA

+1

0 ~ arr.length -1 외부의 잘못된 index number.means를 가진 배열 객체에 액세스 중임 –

+1

배열에 접근하기 전에 배열의 길이를 확인하십시오. 'emp [0]','emp [1]'etc –

답변

0

문제가 명확하지 않다 예외 ... java.lang.ArrayIndexOutOfBoundsException의 occours을 제거하는 방법 존재하지 않는 객체 (배열 요소). 예를 들어 배열의 길이가 7이고 요소 [8]에 액세스하려고 시도했습니다. emp [0]이 (가) null이 아닌지 확인하십시오.

+1

'emp [0] == null'은 코드가'NullPointerException'을 던집니다. – xehpuk

0

아래 코드는 emp에 항상 2 개 이상의 요소가 있어야 함을 알려줍니다. 그렇지 않으면 java.lang.ArrayIndexOutOfBoundsException입니다.

... 
String t = (String) emp[0].trim(); 
String t2 = (String) emp[1].trim(); 
... 
0

요소에 액세스하기 전에 emp 배열의 길이를 확인해야합니다.

if(emp!=null && emp.length==2){  
     String t = (String) emp[0].trim(); 
     String t2 = (String) emp[1].trim(); 
    } 
0

안녕하세요의 당신이 조건이 줄에서 가져 오기는 숫자 값을 알고 있습니다

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

아래 당 확인 배치 할 수 있습니다 당신이이 경우에 제대로 자리 CSV 파일 및 콘텐츠가 있다고 가정하자.

또는 목록을 활용할 수 있습니다. 이것은이 문제에서 완전히 벗어날 것입니다.

List lst= Arrays.asList(emp); 

목록 및 가져 오기 목록을 활용하는 방법은 java docs를 참조하십시오.

+0

테스트 'emp.length> 0'은 의미가 없습니다. 프로그램이 그 시점에 도달하면 항상 사실입니다. – Tom

+0

Thanks @Tom. 당신은 coorect 있습니다 – Krutik

관련 문제