3 回答
TA贡献1860条经验 获得超8个赞
Console.ReadLine()只读取一行。 读取第一行 当您进入新行时。在你的情况下,只读取第一行,然后对于第二行,你的程序只得到第一个字符并退出。string input = Console.ReadLine()
检查这个:
int numberOfElements = Convert.ToInt32(Console.ReadLine());
int sum= 0;
for (int i=0; i< numberOfElements; i++)
{
string input = Console.ReadLine();
sum += Array.ConvertAll(input.Split(' '), int.Parse).Sum();
}
Console.WriteLine(sum);
TA贡献1802条经验 获得超10个赞
显然,当您粘贴回车符时,只占用到第一个回车符,您将需要一些描述的循环ReadLine
int numberOfElements = Convert.ToInt32(Console.ReadLine());
var sb = new StringBuilder();
for (int i = 0; i < numberOfElements; i++)
{
Console.WriteLine($"Enter value {i+1}");
sb.AppendLine(Console.ReadLine());
}
var input = sb.ToString();
// do what ever you want here
Console.ReadKey();
TA贡献1828条经验 获得超3个赞
我假设您正在寻找一种方法来允许用户将其他源中的某些内容粘贴到控制台程序中,因此您正在寻找一个答案,您可以在其中处理来自用户的多行字符串输入(他们在其中粘贴包含一个或多个换行符的字符串)。
如果是这种情况,则执行此操作的一种方法是在第一次调用后检查 的值,以查看缓冲区中是否还有更多输入,如果有,请将其添加到已捕获的输入中。Console.KeyAvailableReadLine
例如,下面是一个方法,该方法接受提示(向用户显示),然后返回一个,其中包含用户粘贴(或键入)的每一行的条目:List<string>
private static List<string> GetMultiLineStringFromUser(string prompt)
{
Console.Write(prompt);
// Create a list and add the first line to it
List<string> results = new List<string> { Console.ReadLine() };
// KeyAvailable will return 'true' if there is more input in the buffer
// so we keep adding the lines until there are none left
while(Console.KeyAvailable)
{
results.Add(Console.ReadLine());
}
// Return the list of lines
return results;
}
在使用中,这可能看起来像这样:
private static void Main()
{
var input = GetMultiLineStringFromUser("Paste a multi-line string and press enter: ");
Console.WriteLine("\nYou entered: ");
foreach(var line in input)
{
Console.WriteLine(line);
}
GetKeyFromUser("\nDone!\nPress any key to exit...");
}
输出
你接下来做什么取决于你想要完成什么。如果要获取所有行,将它们拆分为空格字符,并将所有结果作为单个整数的列表返回,则可以执行以下操作:
private static void Main()
{
int temp = 0;
List<int> numbers =
GetMultiLineStringFromUser("Paste a multi-line string and press enter: ")
.SelectMany(i => i.Split()) // Get all the individual entries
.Where(i => int.TryParse(i, out temp)) // Where the entry is an int
.Select(i => Convert.ToInt32(i)) // And convert the entry to an int
.ToList();
Console.WriteLine("\nYou entered: ");
foreach (var number in numbers)
{
Console.WriteLine(number);
}
GetKeyFromUser("\nDone!\nPress any key to exit...");
}
输出
或者你甚至可以做一些花哨的事情,比如:
Console.WriteLine($"\n{string.Join(" + ", numbers)} = {numbers.Sum()}");
输出
- 3 回答
- 0 关注
- 116 浏览
添加回答
举报