C# 允许用户在Windows控制台中键入任意数量的字符串,然后显示有关已键入字符串中字母数和行号的信息
我正在尝试使用Windows控制台应用程序,该应用程序允许用户在一行中写入任意数量的字母(字符串),然后单击“回车”移动到下一行等。如果用户在控制台中写入“showme”,则应向其显示信息:此行中的行号和字符串中的字母数(图像)。还应该有“结束”功能来关闭控制台,但它已经完成了。 我的问题是如何存储由用户输入的字符串,并使用这样的信息从“show”调用它们(我尝试使用数组) 我做过类似的事情,但根本不起作用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[
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代码进行太多的修改,因为我认为太多的更改会增加混乱。