2016-03-13 1 views
3

У меня возникли проблемы с захватом случайного элемента из файла CSV. Вот мой кодЗахват случайного элемента из файла CSV

public String[] generateNames(String Name) 

BufferedReader br = new BufferedReader(newFileReader("c:\\users\\listofcities.csv")); 


Random generator = new Random(); 

int row = generator.nextInt(1); 

String[] arrayValues = new String[row]; 

     for (int i=1; i<arrayValues.length; i++) { 
      while ((line = br.readLine()) != null) { 
       StringTokenizer st = new StringTokenizer(line, "\n"); 
       while (st.hasMoreTokens()) { 
        //get next token and store it in the array 
        arrayValues[row] = st.nextToken(); 

       } 

      } 
      row++; 
     } 
     //close the file 
     br.close(); 

     return arrayValues; 
    } 

Всякий раз, когда у меня есть значение строки, как и все, кроме 1, я получаю исключение arrayoutofbounds. Может ли кто-нибудь поставить меня на правильный путь, потому что мой код трахается.

ответ

0

Вы используете public int nextInt(int bound) от Random класс, который возвращает значение между 0 (включительно) и указанным значением bound (исключение).

String[] arrayValues = new String[row]; Эта строка производит массив размером 0 или 1. Поэтому, когда вы пытаетесь получить доступ к arrayValues[i], где i больше размера массива, он генерирует исключение.

0

Проблема с вашим кодом заключается в том, что вы генерируете значения как 0 или 1, поэтому измените оператор генерации случайных чисел на это.

int randomNum = minimum + rand.nextInt((maximum - minimum) + 1); 

минимум = начальное значение в диапазоне, максимум = конечное значение в диапазоне

Смежные вопросы