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); }

现在这不是随机的(我希望)&这也只适用于一个标签。我怎样才能在随机显示多个标签上的文本文件,同时确保没有标签显示相同的文本从文本文件?

c#从文本文件随机加载文本到多个文本框

读取文件一次(而不是在每次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);

既然授人以鱼不如授人以渔呢。似乎你需要在头脑中理清每一个步骤。最好的方法是为你要做的事情写出伪代码。

  1. 将答案加载到内存
  2. 将答案转换为数组
  3. 创建一个随机器,返回一个特定长度的数字列表
  4. 该数字列表必须只包含小于数组长度的数字
  5. 该列表不能包含两次相同的数字。
  6. 使用这个新列表并遍历您的答案集合
  7. 从数组中提取答案并分配给标签。

这个列表当然可以改进。通过伪代码将任务分解为可管理的逻辑块每个任务变成一个函数,并根据它的任务命名。

一本很棒的编程书(不是c#)是Code Complete

编程快乐!