C# 允许用户在Windows控制台中键入任意数量的字符串,然后显示有关已键入字符串中字母数和行号的信息

C# 允许用户在Windows控制台中键入任意数量的字符串,然后显示有关已键入字符串中字母数和行号的信息,c#,arrays,string,if-statement,while-loop,C#,Arrays,String,If Statement,While Loop,我正在尝试使用Windows控制台应用程序,该应用程序允许用户在一行中写入任意数量的字母(字符串),然后单击“回车”移动到下一行等。如果用户在控制台中写入“showme”,则应向其显示信息:此行中的行号和字符串中的字母数(图像)。还应该有“结束”功能来关闭控制台,但它已经完成了。 我的问题是如何存储由用户输入的字符串,并使用这样的信息从“show”调用它们(我尝试使用数组) 我做过类似的事情,但根本不起作用 class Text { static void Main(string[

我正在尝试使用Windows控制台应用程序,该应用程序允许用户在一行中写入任意数量的字母(字符串),然后单击“回车”移动到下一行等。如果用户在控制台中写入“showme”,则应向其显示信息:此行中的行号和字符串中的字母数(图像)。还应该有“结束”功能来关闭控制台,但它已经完成了。 我的问题是如何存储由用户输入的字符串,并使用这样的信息从“show”调用它们(我尝试使用数组)

我做过类似的事情,但根本不起作用

 class Text
  {
    static void Main(string[] args)
    {
        Boolean endless = true;
        ArrayList array = new ArrayList();
        String s;

        while (endless)
        {
            if(Console.ReadLine() == "showme")
            {
                Console.WriteLine("--------------");
            }
            if(Console.ReadLine() == "end")
            {
                Environment.Exit(0);
            }
                s = Console.ReadLine() + "\n";
                array.Add(s);
        }

        s = Console.ReadLine();
    }
}
有两件事:

考虑使用
列表
数组列表
(可选)

另外,您永远不会将
Console.ReadLine()
的值添加到ArrayList中,因为它不在您的循环中

static void Main(string[] args)
{
    // Consider using a list instead of an ArrayList (optional)
    List<string> lines = new List<string>();

    while (true)
    {
        string input = Console.ReadLine();

        if (input == "showme")
        {
            // Here we print each string and stats.
            foreach (string s in lines)
            {
                Console.WriteLine(s); // Write the line.
                Console.WriteLine("{0} contains {1} letters", s, s.Length); // Write the stats.
            }
        }
        else if (input == "end")
        {
            Environment.Exit(0);
        }
        else
        {
            // This is where you add your input string to the collection above.
            lines.Add(input);
        }
    }
}
static void Main(字符串[]args)
{
/考虑使用列表而不是数组列表(可选)
列表行=新列表();
while(true)
{
字符串输入=Console.ReadLine();
如果(输入=“showme”)
{
//这里我们打印每个字符串和统计信息。
foreach(行中的字符串s)
{
Console.WriteLine;//写一行。
WriteLine(“{0}包含{1}个字母”,s,s.Length);//写入统计信息。
}
}
否则如果(输入=“结束”)
{
环境。退出(0);
}
其他的
{
//在这里,您可以将输入字符串添加到上面的集合中。
行。添加(输入);
}
}
}
您可以试试:

        if(Console.ReadLine() == "showme")
        {
            Console.WriteLine("--------------");
            for(int i =0; i < array.count; i++)
            {
                Console.WriteLine("Index["+i+"]+" "+array[i]);
            }
        }
if(Console.ReadLine()=“showme”)
{
Console.WriteLine(“--------------”;
对于(int i=0;i
你真的想把它放在控制台应用程序中吗?!如果是这样,我认为你应该将If分块并使用case/switch。是的,它一定是控制台应用程序。没有显示写回存储字符串的代码。到底是什么不起作用?更不公平的否决票。这是一个可怕的习惯,StackOverflow。问题是“我做错了什么?”以及对于一个有经验的程序员来说,这个解决方案非常简单,但如果你只是刚开始的话,这个解决方案有点微妙。@RJLohan问题是他调用了Console.ReadLine()三次。请看Inisher的答案。谢谢,我说的所有函数,如“showme”和“end”都应该在while()中,对吗?我个人会利用他的
无止境
布尔值退出循环。有一行;
数组。添加
在循环中。列表可能更可取,但不是出于任何相关原因;因为它不会影响OP代码的行为。@Fastkowy更新了示例。@RJLohan在这两种情况下都是正确的。但是,我不想对OPs代码进行太多的修改,因为我认为太多的更改会增加混乱。