【问题标题】:Remove arraylist string stopping random function删除 arraylist 字符串停止随机函数
【发布时间】:2015-10-24 11:02:39
【问题描述】:

感谢 stackoverflow 社区,我的problem 已修复。但是,我现在有一个新问题。我有一些代码从文件中读取随机行,显示它,现在从数组列表中删除随机行,这样它就不会再次显示。但是现在,显示的线条不是随机的。我有一个包含 40 行的文件,现在它只按顺序显示最后 20 行。这是更新的代码:

try {
    Random random = new Random();
    int randomInt = random.nextInt(50);
    FileReader fr = new FileReader(file);
    BufferedReader reader = new BufferedReader(new FileReader(file));
    String line = reader.readLine();
    if (line.contains("!")) {
        List<String> lines = new ArrayList<>();
        while (line != null) {
            lines.add(line);
            line = reader.readLine();
            Random r = new Random();
            String rdmln = lines.get(r.nextInt(lines.size()));
            line1.setText("Line" + rdmln);
            lines.remove(rdmln);

代码的其余部分重复从 'lines.add(line)' 到 'lines.remove(rdmln)' 的过程,但相反,它在标签 'line2' 上显示 'rdmln2',然后删除 'rdmln2' 和很快。谁能看到可能导致此问题的原因?提前致谢。

【问题讨论】:

    标签: java random arraylist line


    【解决方案1】:

    您可以通过验证每一行代码自己对代码进行故障排除

    Random random = new Random();
    int randomInt = random.nextInt(50);  
    

    检查这个随机数的输出,即使你在显示的代码中的任何地方都没有看到它

    BufferedReader reader = new BufferedReader(new FileReader(file));
        String line = reader.readLine();
        if (line.contains("!")) {
    

    上面的代码会在你的文本文件的第一行寻找!,如果没有找到,那么它就不会添加到你的列表中。因此,请确保您的第一行必须包含 !

      List<String> lines = new ArrayList<>();
      while (line != null) {
            lines.add(line);
            line = reader.readLine();
            Random r = new Random();
            String rdmln = lines.get(r.nextInt(lines.size()));
    

    您已经声明了具有0 大小的列表,并开始将元素添加到您的列表中,直到文件末尾。如果你注意到了,你已经在你的while循环中创建了新的Random类实例,你正在传递你的列表大小,最初是0,但在添加第一个元素后变成1。所以从技术上讲,它将返回1,同样在每次迭代后随机值范围会增加,因此返回值。

    这意味着,您需要查看您在循环中编写的以下行

             Random r = new Random();
            String rdmln = lines.get(r.nextInt(lines.size()));
    

    因为,您正在寻找随机线。然后,你的循环中应该有一个计数器来从文件中获取你的随机行,我在你的代码中没有看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2018-06-05
      • 2013-05-13
      • 2019-07-22
      • 1970-01-01
      相关资源
      最近更新 更多