从CSV文件中获取随机元素

时间:2016-03-13 07:01:31

标签: java

我无法从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异常。任何人都可以把我放在正确的轨道上,因为我的代码很糟糕。

2 个答案:

答案 0 :(得分:0)

您正在使用public int nextInt(int bound)类中的Random,它返回介于0(含)和指定bound值(不包括)之间的值。

String[] arrayValues = new String[row];此行生成大小为0或1的数组。因此,当您尝试访问其中arrayValues[i]大于数组大小的i时,它会抛出异常。

答案 1 :(得分:0)

您的代码问题是您生成的值为0或1,因此将随机数生成语句更改为此。

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

minimum =范围内的初始值, maximum =范围内的最终值