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

时间:2018-05-04 07:38:12

标签: c# arrays console user-input

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

然后,它将计算平均值并相应地打印正面或负面。但是,我无法从用户那里获取输入“输入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");
                }           
        }
    }

4 个答案:

答案 0 :(得分:2)

我会使用while循环与int.TryParse结合来检查用户输入是否为数字。将average = marks.Average();置于for循环中也没有任何意义,因为LINQ Average计算集合的平均值(在您的情况下是marks数组)。

static void Main()
{
    int[] marks = new int[5];

    int a = 0;

    Console.WriteLine("Enter 5 elements:");

    while (a < 5)
    {
        if (int.TryParse(Console.ReadLine(), out marks[a]))
            a++;
        else
            Console.WriteLine("You didn't enter a number! Please enter again!");
    }

    double average = marks.Average();

    if (average > 0)
        Console.WriteLine("Positive");
    else
        Console.WriteLine("Negative");
}

DEMO HERE

答案 1 :(得分:1)

编辑我的答案,说明在没有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");
    }
}

答案 2 :(得分:0)

关注Stackoverflow Answer

因为正在使用整数数组,并且由于控制台的输入是字符串值,您需要使用Parse()方法转换它。例如,

string words = "83";

int number = int.Parse(words);

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

答案 3 :(得分: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();
    }
}