2015-01-26 2 views
-3

Я хочу извлечь значение отдельного столбца CSV file.so Я использовал набор данных CSV FILE, имеющий экземпляры: 45211 и Number of Attributes: 17. я был попробовать с этим кодом ..но его дать мне ошибки, как это .. «главный» java.lang.ArrayIndexOutOfBoundsException: 3«main» java.lang.ArrayIndexOutOfBoundsException: 3

Просьба помочь мне ...

import java.io.File; 
    import java.io.FileNotFoundException; 
    import java.util.Scanner; 
    import java.util.logging.Level; 
    import java.util.logging.Logger; 

    public class Main { 

     public static void main(String[] args) { 
      // TODO code application logic here 

      String filename ="bank-full.csv"; 
      File file= new File(filename); 

      try { 

       Scanner inputStream = new Scanner(file); 
       inputStream.next(); 
       while(inputStream.hasNext()) 
       { 
        String data= inputStream.next(); 
        String[] values = data.split(","); 
        // double balance= Double.parseDouble(values[2]); 
        System.out.println(values[3]); 
       }   

        inputStream.close(); 
      } catch (FileNotFoundException ex) { 
       Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); 
      } 

     } 

    } 
+0

Поместите точку останова на строку, которая выдает исключение. Запустите класс в режиме отладки и посмотрите значения переменных, чей доступ бросает исключение. В этом случае это массив. –

+0

вы отлаживали, проверяли фактическое значение «значений»? вы проверяли, используете ли вы правильный символ разделителя? попытался выполнить итерацию по массиву, чтобы проверить (число) значений? – Stultuske

+0

благодаря всей его помощи мне ... im done .. –

ответ

0

(1) Вы уверены, что в этом разделителе есть запятая?

(2) Могут ли быть пустые «столбцы» в файле? Если это необходимо, используйте следующую команду:

String[] values = data.split(",", -1); 
+0

нет никаких значений для номинантов ... –

+0

Можете ли вы отправить строку (в файле), что она не работает? Попробуйте распечатать данные String (= inputStream.next()) и предоставить нам последнюю печатную строку. –

1

Я предполагаю, вы хотите читать по одной строке за один раз:

Scanner inputStream = new Scanner(file); 

    while(inputStream.hasNextLine()) 
    { 
     String data = inputStream.nextLine(); 
     String[] values = data.split(","); 
     System.out.println(values[3]); // now, this line is safe only if you are 
             // sure that each row would have at least 3 commas 
    } 
Смежные вопросы