如何允许用户保持输入用户名?

时间:2016-03-16 16:50:36

标签: c# visual-studio-2013 console-application

我想允许用户输入用户名。然后应将用户名存储在文件中(如果文件不存在则创建该文件)。但是,如果文件中已存在用户名,则用户应该收到错误。

完成后,用户应该能够输入新的用户名。

我的问题是我不知道如何继续询问用户名?

string fileName = ("Usernames.txt");
if (File.Exists(fileName))
    Console.WriteLine("Username file already exists!");
else
    Console.WriteLine("Username file was created!");
    FileStream un = new FileStream("Usernames.txt",
        FileMode.Create, FileAccess.Write);
    StreamWriter kasutajanimed = new StreamWriter(un);
    Usernames.Close();

Console.WriteLine("Username: ");
string uCreation = Console.ReadLine();
bool exists = false;
foreach (string lines in File.ReadAllLines("Usernames.txt"))
{
    if (lines == uCreation)
    {
        Console.WriteLine("Username already exists!");
        exists = true;
        break;
    }
}
if (!exists)
{
    File.AppendAllText(@"Usernames.txt", uCreation + Environment.NewLine);
}

2 个答案:

答案 0 :(得分:0)

你只需要另一个循环让他们输入另一个用户名。

while(true)
{
    Console.WriteLine("Username: ");
    string uCreation = Console.ReadLine();
    bool exists = false;

    foreach (string lines in File.ReadAllLines("Usernames.txt"))
    {
        if (lines == uCreation)
        {
            Console.WriteLine("Username already exists!");
            exists = true;
            break;
        }
    }

    if (!exists)
    {
        File.AppendAllText(@"Usernames.txt", uCreation + Environment.NewLine);
        break;
    }
}

答案 1 :(得分:0)

如果您每次都以这种方式搜索文件,则每个条目都将为O(n)。我认为更好的方法是保留一个包含文件中所有用户名的集合。因此,打开文件时,将文件中的所有用户名添加到HashSet中。然后,您只需调用hashSet.Contains(username)即可检查O(1)时间内是否存在用户名。

为了不断询问用户,您可以使用while循环。像这样

while (true) // Loop indefinitely
    {
        Console.WriteLine("Username: "); // Prompt
        string line = Console.ReadLine(); // Get string from user
        if (hashSet.Contains(line)) {
             Console.WriteLine("Username Already in Use");
             continue;
        }
        if (line == "exit") // have a way to exit, you can do whatever you want
        {
        break;
        }
        // Here add to both file and your HashSet...
    }