为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字符串的“数组”插入到值中?

如何将字符串的“数组”插入到值中?

C#
芜湖不芜 2022-08-20 17:25:04
我只想输入以下数字100 815 2451945 54进入一个值,但由于某种原因,当我将其复制粘贴到我的ReadLine中时 - 程序将我踢出(没有错误或smth - 所以我几乎无法理解刚刚发生的事情...)我已经有一个代码,允许我在排列在LINE中时插入一组数字(但不是描述中所示的表格...)        int numberOfElements = Convert.ToInt32(Console.ReadLine());           int sum = 0;        string input = Console.ReadLine();             var numbers = Array.ConvertAll(input.Split(' '), int.Parse).ToList();           Console.ReadKey();我希望将我的号码列入列表
查看完整描述

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);


查看完整回答
反对 回复 2022-08-20
?
守候你守候我

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();


查看完整回答
反对 回复 2022-08-20
?
倚天杖

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...");

}

输出

//img1.sycdn.imooc.com//6300a8ac0001cfe511090501.jpg

你接下来做什么取决于你想要完成什么。如果要获取所有行,将它们拆分为空格字符,并将所有结果作为单个整数的列表返回,则可以执行以下操作:


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...");

}

输出

//img1.sycdn.imooc.com//6300a8bc0001fffa11760596.jpg

或者你甚至可以做一些花哨的事情,比如:

Console.WriteLine($"\n{string.Join(" + ", numbers)} = {numbers.Sum()}");

输出

//img1.sycdn.imooc.com//6300a8ca000167bc10530545.jpg

查看完整回答
反对 回复 2022-08-20
  • 3 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信