随机数组元素

时间:2013-11-04 03:13:26

标签: java random arraylist

我想从一个arraylist中随机选择5个元素。出于某种原因,它总是选择0作为随机元素。任何帮助?这是我到目前为止的代码。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.Scanner;

public class Rewards {

public static void main(String[] args) throws FileNotFoundException {

    String fileName = ("C:/Users/Jordan/Desktop/Proj5.txt");
    FileReader fin = new FileReader(fileName);
    Scanner src = new Scanner(fin);
    ArrayList<String> lines = new ArrayList<String>();
    src.useDelimiter(":");

    while (src.hasNext()) {
        lines.add(src.nextLine());
        System.out.println(src.next());
        // replace above line with array
    }
    String[] lineArray = new String[lines.size()];
    lines.toArray(lineArray);
    Random rand = new Random();
      for (int i = 0; i < 5; i++) {
          int choice = rand.nextInt(lineArray.length);
          System.out.println("Random Winner is: " + choice);
         }

}
}

2 个答案:

答案 0 :(得分:0)

可能是因为lineArray的长度为零,因为你依赖的是你的数字范围:

int choice = rand.nextInt(lineArray.length); // always 0 if lineArray is empty

lineArray的大小又取决于lines的大小,因此也可能是空的。

lines的大小又取决于Proj5.txt的内容,因此可能也是空的。

首先查看文件,然后调试(使用IDE的调试器)代码。

答案 1 :(得分:0)

首先,您的代码是正确的。

数组是否为空?你试过打印它的长度吗?

不是将ArrayList转换为数组,而是简单地对其进行索引并使用lines.get(i)获取元素,从而避免无关的步骤。此外,您可以使用size()来获取ArrayList中实际存在的元素;这可以用来设置循环的限制。