C# 从用户处读取整数数组,该数组在C中用空格分隔#

C# 从用户处读取整数数组,该数组在C中用空格分隔#,c#,space,separator,C#,Space,Separator,我被要求解决C#中的一个问题,即在一行中从控制台获取“n”个用户输入的总和,这些输入由空格分隔 int n = Convert.ToInt32(Console.ReadLine()); int[] arr = new int[n]; int sum = 0; for(int i = 0; i < n; i++) { arr[i] = Convert.ToInt32(Console.ReadLine()); sum += arr[i]; } Console.WriteLine("

我被要求解决C#中的一个问题,即在一行中从控制台获取“n”个用户输入的总和,这些输入由空格分隔

int n = Convert.ToInt32(Console.ReadLine());
int[] arr = new int[n];
int sum = 0;
for(int i = 0; i < n; i++) {
   arr[i] = Convert.ToInt32(Console.ReadLine());
   sum += arr[i];
}
Console.WriteLine("{0}",sum);
int n=Convert.ToInt32(Console.ReadLine());
int[]arr=新的int[n];
整数和=0;
对于(int i=0;i
如何修改此代码以从空格分隔的输入中获得预期的输出? 此外,这些值需要存储在数组中

输入:

五,

123445

输出:


15

你可以这样做:

int result = input.Split(' ').Take(n).Select(int.Parse).Sum();
但在我看来,您可以避免询问用户计数,只需将他们键入的所有行相加:

string input = Console.ReadLine();
int result = input.Split(' ').Select(int.Parse).Sum();
Console.WriteLine(result);
(请注意,此代码不进行错误检查。)

编辑:似乎您想要一个整数数组。在这种情况下,您可以这样做(同样,没有错误检查):

当然,您必须根据需要处理任何错误的用户输入

根据您的附加要求:

int[] items = Console.ReadLine().Split().Select(int.Parse).ToArray();
int sum = items.Sum();

您需要在C#中使用split函数。当你读这一行时,你就得到了整一行。这意味着您试图说“sum=0加上Convert.ToInt32('5123445'),但这不起作用

需要一个等于的整数数组 Console.ReadLine().Split(“”)

String.Split函数:

在循环中使用arr[i]=Convert.ToInt32(Console.ReadLine())将导致程序期望在不同的行上输入,而不是在单行上。
您可以做的是将输入作为字符串,然后根据空间进行分割,从而生成一个输入值数组。考虑到Naveen看起来是个学生,我认为更多的代码可以更好地解释,让他从这个练习中学到更多:

我制作了一个示例,它获取一些由空格或enter分隔的数字,当用户输入T时,使用循环和Linq以传统方式计算总和。我相信有很多更好的方法可以做到这一点,但也许更结构化一点的东西可以更好地开始理解C

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间总和数
{
班级计划
{
静态void Main(字符串[]参数)
{
Console.WriteLine(“插入由空格或[Enter]>键分隔的数字,当完成写入T并按[Enter]键时,您将得到结果”);
列表值=新列表();
while(true)
{
字符串inputData=Console.ReadLine();
if(inputData.ToUpper().StartsWith(“T”)中断;
字符串[]svals=inputData.Split(“”);
for(int i=0;i
否,我想将分离的值存储到数组中。您在哪里遇到问题?@Some1Pr0存储数组值时遇到问题。更不用说,由于您正在读取用户输入,您必须防止尝试求和“1 2 3 foo bar”。我相信convert会引发字符串输入异常。错误2“System.Array”不包含“Take”的定义,并且找不到接受“System.Array”类型的第一个参数的扩展方法“Take”(是否缺少using指令或程序集引用?)c:\users\naveenkumar\documents\visual studio 2013\Projects\HackerRank\HackerRank\Program.cs 17 48HackerRank@NaveenKumarV您必须使用System.Linq执行
,我只是补充一点,如果您想从用户那里获得多行代码,您必须设置一个循环(比如一段时间)收集字符串,然后在用户退出循环时计算总和。@Sabrina_cs似乎希望在一行中键入所有数据。@all。谢谢你为解决我的问题所做的努力。
int result = Console.ReadLine().Split().Select(int.Parse).Sum();
int[] items = Console.ReadLine().Split().Select(int.Parse).ToArray();
int sum = items.Sum();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SumTheNumbers
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Insert the numbers separated by a space or [Enter]> key, when finished write T and press [Enter] and you will have the result");
            List<int> values = new List<int>();
            while (true)
            {
                string inputData = Console.ReadLine();
                if (inputData.ToUpper().StartsWith("T")) break;
                string[] svals = inputData.Split(' ');

                for (int i = 0; i < svals.Length; i++)
                {
                    int x = 0;
                    int.TryParse(svals[i], out x);
                    if (x != 0) values.Add(x);
                }



            }

            //Traditional mode
            int total = 0;
            for (int i = 0; i < values.Count; i++)
            {
                total = total + values[i];
            }

            //Linq mode

            int totalLinq = values.Sum();

            Console.WriteLine("The sum is");
            Console.Write("Total: ");
            Console.WriteLine(total.ToString());
            Console.Write("Total linq: ");
            Console.WriteLine(totalLinq.ToString());
            Console.WriteLine("Press a key to end...");
            Console.ReadKey();

        }
    }
}