java Remove arraylist字符串停止随机函数
多亏了stackoverflow社区,我的problem被修复了。然而,我现在有一个新问题。我有一些代码,可以从文件中读取一个随机行,显示它,现在从arraylist中删除随机行,这样就不会再次显示它。但现在,显示的线条不是随机的。我有一个文件,里面有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);
代码的其余部分从“行”重复该过程。添加(行)至行。删除(rdmln)”,但它会在标签“line2”上显示“rdmln2”,然后删除“rdmln2”,依此类推。有人知道是什么导致了这个问题吗?提前谢谢
# 1 楼答案
通过验证每行代码,您可以自己解决代码故障
检查这个随机数的输出,我也没有看到你在显示的代码中的任何地方使用它
上面的代码将在文本文件的第一行查找
!
,如果找不到,则不会添加到列表中。所以,请确保第一行必须包含!
您已经声明了大小为
0
的列表,并开始向列表中添加元素,直到文件结束。如果您注意到了,您已经在while循环中创建了新的Random
类实例,您正在传递列表大小,它最初是0
,但在添加第一个元素之后变成了1
。所以从技术上讲,它将返回1
,同样地,在每次迭代之后,随机值范围将增加,因此返回值也将增加这意味着,您需要在下面的行中进行检查,这是您在循环中编写的
因为,你在寻找随机线。然后,在循环中应该有一个计数器来从文件中获取随机行,我在代码中没有看到