我有一个程序,我想在标签上显示一条随机行,然后在执行一个动作后,显示一个新的动作。我知道如何读取文件的内容,但确定如何显示随机行。此外,一旦显示一行,我不希望再次显示相同的行。我已经看到很多建议在谈论'数组'列表'和' arraylists'。我在这方面有点新手,非常感谢你的帮助。感谢。
我已经做到这一点,但不知道怎么做随机'部分...
BufferedReader in = new BufferedReader(new FileReader("lines.txt"));
String str;
List<String> list = new ArrayList<String>();
while((str = in.readLine()) != null){
list.add(str);
}
String[] stringArr = list.toArray(new String[0]);
答案 0 :(得分:1)
在while循环之后,你有一个String
列表,其中列表中的每个项目(每个String
)都是文件中的一行,对吗?
因此,您生成一个介于0和列表长度之间的数字,以从文件中选择一个字符串,然后从列表中删除该字符串。
像
这样的东西public String getRandomStringFromList(List<String> list)
{
int index = new Random().nextInt(list.size());
return list.remove(index);
}
(最好静态初始化Random
一次,而不是每次使用它时动态,但这是你想做的事情的基础。)
此外,除非该行在文件中重复,否则不会显示相同的行两次。如果您可以在文件中包含重复的行,但只想在集合中存储一次,请使用另一个答案中所述的Set
。
答案 1 :(得分:0)
您可以使用Set而不是List。那你就不会有重复的行。更多信息,请在此处验证:https://docs.oracle.com/javase/tutorial/collections/interfaces/set.html