我必须做一个软件,它真的很复杂,我的意思是,真的不知道如何完成它。有很多细节,但我会在这里写一个我需要的简单例子。
文件夹始终更改!在那个文件夹中,我有这样的文件:
FILE1.TXT FILE2.TXT File3.txt File4.txt
在文件中(所有相同的结构)。这就像file1.txt:
WORD1 WORD2 字.. wordn
也许File1.txt有100个单词,而File2.txt只有10个单词。
如果用户输入的单词是10.软件必须经过尽可能多的文件,并从中获取10个单词。
忘了提,10个字,不应该从每一行的开头。
如果file1.txt是:
word1 word2 word3 word 4 word5
我想得到它的第三个字。或者word2,无所谓,但它必须是随机的。
想法是尽快使流程随机化。在这种情况下,如果我可以从File1.txt获得1个单词,从File4.txt中获取1个单词来自File2.txt的2个单词和来自File3.txt的1个单词
我怎么能随机化这些东西呢?
谢谢!
答案 0 :(得分:3)
这样的事情:
阅读所需文件。 将每个文件中的单词复制并拆分为数组。 从该数组中选择n个随机单词。
可能有很多方法可以解决这个问题,但上述内容非常简单。研究我列出的每个部分,你应该发现自己能够完成整个问题。如果问题看起来太大;分而治之!
答案 1 :(得分:1)
一种非常好的方法,可以满足您的需求,这是让软件快速运行的一般方法:
尽快尝试在应用程序中查看所需的接口 (即您的应用程序的边界是什么,应用程序的内容是什么 什么将从你的申请中删除。)
然后,如果抽象出一些接口,则提供一个随机的实现 界面,它只是做你期望的。 (例如,如果你想要一些 数据源,你可以有一个ISomeDataSource,它有一个方法ReadAll,和 你可以非常快速地提供一个具有ReadAll的RandomSomeDataSource 返回一些数据。
这样,你可以非常快速地解决这个复杂问题 灵活变化,你会看到你得到的东西。一旦你的“简单路径” 正在工作,你可以实现所有那些接口,然后具有 很有可能被测试,你的整体应用也可以 由产品所有者非常快速地检查,即他可以说出他想要的东西 当他看到他得到的东西。 (工作真的很好)
<强>混凝土强>
有一个InputWords接口,我们可以调用它
interface IWordInput
{
void ReadWords(string[] words);
}
和文件夹输入
interface IFolderInput
{
void InputFolder(string path);
}
和随机词源
interface IWordSource
{
void ReadAllWords(string path, out string[] words);
string GetRandomWord(string[] words);
}
并且来了:
class RandomWordSource : IWordSource
{
public ReadAllWords(string path, out string[] words)
{
// somewhat like
words = new[] string;
words.Add("word1");
words.Add("word2);
// and so on
}
public string GetRandomWord(string[] words)
{
// sic
return words.FirstOrDefault();
}