Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取用户输入并将其添加到C的数组中#_C#_Arrays_Console_User Input - Fatal编程技术网

C# 获取用户输入并将其添加到C的数组中#

C# 获取用户输入并将其添加到C的数组中#,c#,arrays,console,user-input,C#,Arrays,Console,User Input,我试图从用户那里获得5次输入,并将这些值添加到marks数组中 然后,它将计算平均值并相应地打印正片或负片。但是,我无法从用户那里获取输入,它只是打印“输入5个元素”。从用户获得输入后,如何将它们添加到标记数组中?任何提示都会有帮助 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; class Progr

我试图从用户那里获得5次输入,并将这些值添加到marks数组中

然后,它将计算平均值并相应地打印正片或负片。但是,我无法从用户那里获取输入,它只是打印“输入5个元素”。从用户获得输入后,如何将它们添加到标记数组中?任何提示都会有帮助

using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text.RegularExpressions;
    class Program
    {
        static void Main()
        {
                double average =0;
                int [] marks = new int[] { };

                 for (int a = 0; a < 5; a++){
                    Console.WriteLine("Enter 5 elements:"); 
                string line = Console.ReadLine(); 
                 Console.WriteLine(line);

            }
                for (int i = 0; i < marks.Length; i++){
                    average = marks.Average();
            }
                if(average>0){
                    Console.WriteLine("Positive");
                }else{
                    Console.WriteLine("Negative");
                }           
        }
    }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Text.RegularExpressions;
班级计划
{
静态void Main()
{
双平均=0;
int[]标记=新的int[]{};
对于(int a=0;a<5;a++){
Console.WriteLine(“输入5个元素:”);
string line=Console.ReadLine();
控制台写入线(行);
}
for(int i=0;i0){
控制台。写线(“正”);
}否则{
控制台。写入线(“负数”);
}           
}
}
遵循

由于使用的是整数数组,并且控制台的输入是字符串值,因此需要使用Parse()方法对其进行转换。例如

string words = "83";

int number = int.Parse(words);

编辑:在解析中使用字符串变量。

编辑了我的答案,以说明在不使用for循环的情况下解决问题的方法

class Program
{
    const int numberOfMarks = 5;
    static void Main()
    {
        List<int> marks = new List<int>();
        Enumerable.Range(1, numberOfMarks)
        .ForEach((i) => {
            Console.Write($"Enter element {i}:");
            marks.Add(int.TryParse(Console.ReadLine(), out var valueRead) ? valueRead : 0);
            Console.WriteLine($" {valueRead}");
        });
        Console.WriteLine(marks.Average() >= 0 ? "Positive" : "Negative");
    }
}
类程序
{
常数int numberOfMarks=5;
静态void Main()
{
列表标记=新列表();
可枚举范围(1,numberOfMarks)
.ForEach((i)=>{
Write($“输入元素{i}:”);
marks.Add(int.TryParse(Console.ReadLine(),out var valueRead)?valueRead:0);
Console.WriteLine($“{valueRead}”);
});
Console.WriteLine(marks.Average()>=0?“正”:“负”);
}
}

我将使用
while
循环和
int.TryParse
来检查用户输入是否为数字。此外,将
average=marks.average()放在下面也没有任何意义在for循环中,因为LINQ
Average
计算集合的平均值(在您的例子中,
标记
数组)

static void Main()
{
int[]标记=新的int[5];
int a=0;
Console.WriteLine(“输入5个元素:”);
while(a<5)
{
if(int.TryParse(Console.ReadLine(),out标记[a]))
a++;
其他的
Console.WriteLine(“您没有输入数字!请重新输入!”);
}
双倍平均=分数。平均();
如果(平均值>0)
控制台。写线(“正”);
其他的
控制台。写入线(“负数”);
}

这将对您有所帮助,只需复制并粘贴即可。 有一些解释和评论

class Program
{
    static void Main()
    {
        const int numberOfMarks = 5;
        int[] marks = new int[numberOfMarks];

        Console.WriteLine("Enter 5 elements:");
        for (int a = 0; a < numberOfMarks; a++)
        {
            // If entered character not a number, give a chance to try again till number not entered
            while(!int.TryParse(Console.ReadLine(), out marks[a]))
            {
                Console.WriteLine("Entered not a character");
            }

            Console.WriteLine("You entered : " + marks[a]);
        }

        // Have to call Average only once.
        var avg = marks.Average();
        Console.WriteLine(avg > 0 ? "Positive average" : "Negative average");
        Console.ReadLine();
    }
}
类程序
{
静态void Main()
{
常数int numberOfMarks=5;
int[]标记=新的int[numberOfMarks];
Console.WriteLine(“输入5个元素:”);
对于(int a=0;a0?“正平均值”:“负平均值”);
Console.ReadLine();
}
}

你应该在读完“line”后用它做些什么。我应该帮助你。还要注意,您当前正在初始化一个零长度数组,因此您可能希望将其更改为
int[]marks=new int[5]
根据您从控制台输入值的方式,如果您输入以逗号分隔的值,也会更容易。然后可以转到string[]values=InputStr.split(',');-这就是所有的字符串值,按照约翰说的做。(或空格分隔的…不管你喜欢)一个小提示:你不需要
intTemp
只需要在TryParse中使用
out标记[A]
。你可以在
控制台中使用它。WriteLine
方法这很好,你是对的。编辑了我的答案。我意识到,这和你这里的代码几乎一样。这是一个简单的问题,所以没有太多的解决方案。我会投票给你,因为除了我之外,你这里只有一个像样的答案。忘了提一下,它需要更多的答案。:)
class Program
{
    static void Main()
    {
        const int numberOfMarks = 5;
        int[] marks = new int[numberOfMarks];

        Console.WriteLine("Enter 5 elements:");
        for (int a = 0; a < numberOfMarks; a++)
        {
            // If entered character not a number, give a chance to try again till number not entered
            while(!int.TryParse(Console.ReadLine(), out marks[a]))
            {
                Console.WriteLine("Entered not a character");
            }

            Console.WriteLine("You entered : " + marks[a]);
        }

        // Have to call Average only once.
        var avg = marks.Average();
        Console.WriteLine(avg > 0 ? "Positive average" : "Negative average");
        Console.ReadLine();
    }
}