如何在不使用数组的情况下计算1的数量?

时间:2017-02-15 12:13:15

标签: c# arrays comparison

static void Main(string[] args)
{
    int m, count = 0;

    Console.WriteLine("Enter the Limit : ");
    m = int.Parse(Console.ReadLine());

    int[] a = new int[m];
    Console.WriteLine("Enter the Numbers :");

    for (int i = 0; i < m; i++)
    {
        a[i] = Convert.ToInt32(Console.ReadLine());
    }

    foreach (int o in a)
    {
        if (o == 1)
        {
            count++;
        }
    }

    Console.WriteLine("Number of 1s in the Entered Number : "+count);
    Console.ReadLine();
}

这里将每个值都放入数组中,并检查每个值是否等于1。但我需要这个任务而不使用数组。你能帮帮我们吗?

5 个答案:

答案 0 :(得分:4)

输入时只需检查输入,无需存储:

static void Main(string[] args)
{
            int m, count = 0;

            Console.WriteLine("Enter the Limit : ");
            m = int.Parse(Console.ReadLine());

            Console.WriteLine("Enter the Numbers :");

            for (int i = 0; i < m; i++)
            {
              if(Console.ReadLine() == "1")
                 count++;
            }

            Console.WriteLine("Number of 1's in the Entered Number : "+count);

            Console.ReadLine();
}

答案 1 :(得分:3)

您可以简单地将计数添加到数组

        int m, count = 0;
        Console.WriteLine("Enter the Limit : ");
        m = int.Parse(Console.ReadLine());
        Console.WriteLine("Enter the Numbers :");
        for (int i = 0; i < m; i++)
        {
           count += Console.ReadLine() == "1" ? 1 : 0;
        }

        Console.WriteLine("Number of 1's in the Entered Number : "+count);

        Console.ReadLine();

答案 2 :(得分:0)

您可以使用LINQ并删除for循环以及数组。

Console.WriteLine("Enter the Limit : ");
int m = int.Parse(Console.ReadLine());

Console.WriteLine("Enter the Numbers :");

int count =
    Enumerable
        .Range(0, m)
        .Select(n => Console.ReadLine())
        .Where(x => x == "1")
        .Count();

Console.WriteLine("Number of 1's in the Entered Number : " + count);

Console.ReadLine();

答案 3 :(得分:-1)

我建议使用更有意义的变量名称并添加输入验证Int32.TryParse而不是Convert.ToInt32

只需在第一个if (o == 1)进行for检查,然后忘掉第二个。{/ p>

答案 4 :(得分:-1)

您可以使用List而不是数组。 代码在这里

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NumberofOnes
{
    public class Program
    {
        static void Main(string[] args)
        {
            int m, count = 0;
            Console.WriteLine("Enter the Limit : ");
            m = int.Parse(Console.ReadLine());
            List<int> a = new List<int>();

            Console.WriteLine("Enter the Numbers :");
            for (int i = 0; i < m; i++)
            {
                a.Add( Convert.ToInt32(Console.ReadLine()));
            }
            foreach (int o in a)
            {
                if (o == 1)
                {
                    count++;
                }
            }
            Console.WriteLine("Number of 1's in the Entered Number : " + count);

            Console.ReadLine();

        }
    }
}