我无法从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 :(得分: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 =范围内的最终值