【问题标题】:Random Array Element随机数组元素
【发布时间】:2013-11-14 16:19:22
【问题描述】:

我正在尝试从数组列表中随机选择 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);
         }

}
}

【问题讨论】:

    标签: java random arraylist


    【解决方案1】:

    初步判断,您的代码是正确的。

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

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

    【讨论】:

      【解决方案2】:

      可能是因为lineArray 的长度为零,因为您依赖它得到了您的数字范围:

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

      lineArray 的大小又取决于lines 的大小,所以它也可能是空的。

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-18
        • 1970-01-01
        • 1970-01-01
        • 2010-10-23
        • 2016-04-27
        • 2013-06-17
        • 2015-02-08
        • 2018-05-03
        • 1970-01-01
        相关资源
        最近更新 更多