c#从文本文件随机加载文本到多个文本框
本文关键字:文本 随机 文件 加载 | 更新日期: 2023-09-27 18:03:50
我有一个名为answers.txt的文本文件。在这个文本文件中,我已经陈述了一些答案,像这样:
answer1 | answer2 | answer3 |...
为了阅读这些答案,我创建了一个名为answeres的类,它包含以下代码:
public String getAnswer(int number)
{
stream = File.OpenText("answerswers.txt");
String[] answers;
string line = stream.ReadLine();
vragen = line.Split('|');
return answers[number];
}
在我的mainForm,我需要得到这些文本的显示,我有4个标签。我希望这些标签以随机顺序显示这些答案。我是这样做的:
public form1()
{
InitializeComponent();
}
private answer answer1 = new answer();
private int rand = 0;
private void form1_Load(object sender, EventArgs e)
{
label1.Text = answer1.getAnswer(rand); }
现在这不是随机的(我希望)&这也只适用于一个标签。我怎样才能在随机显示多个标签上的文本文件,同时确保没有标签显示相同的文本从文本文件?
读取文件一次(而不是在每次getAnswer()调用时读取)
public List<String> ReadAllAnswers()
{
stream = File.OpenText("answerswers.txt");
String[] answers;
string line = stream.ReadLine();
return line.Split('|', StringSplitOptions.RemoveEmptyEntries);
}
把所有的答案放在一个列表中,用这样的方法洗牌:
ReadAllAnswers()
Random rnd = new Random();
answers = answers.OrderBy<string, int>((item) => rnd.Next());
然后,给label0分配答案[0]…labelN与答案[N]
label1.Text = answers.getAnswer(0);
//...
label4.Text = answers.getAnswer(3);
既然授人以鱼不如授人以渔呢。似乎你需要在头脑中理清每一个步骤。最好的方法是为你要做的事情写出伪代码。
- 将答案加载到内存
- 将答案转换为数组
- 创建一个随机器,返回一个特定长度的数字列表
- 该数字列表必须只包含小于数组长度的数字
- 该列表不能包含两次相同的数字。
- 使用这个新列表并遍历您的答案集合
- 从数组中提取答案并分配给标签。
这个列表当然可以改进。通过伪代码将任务分解为可管理的逻辑块每个任务变成一个函数,并根据它的任务命名。
一本很棒的编程书(不是c#)是Code Complete
编程快乐!